%!PS-Adobe-3.0
%%Pages: 1
%%EndComments
%%BeginProlog
%% BEGIN SPECWEB96 1.00
%%$config = {
%% 'lg_netctrlr' => [
%% 'IBM PCI 155 Mbps ATM',
%% 'PCI Gigabit Ethernet-SX'
%% ],
%% 'hw_ocache' => 'None',
%% 'time_wait' => 60,
%% 'hw_scache' => '256KB L2 cache per processor',
%% 'LOAD_FILL' => 1,
%% 'WAIT_AFTER_SYNCD' => 5,
%% 'sw_file' => 'JFS',
%% 'Issue' => '--',
%% 'hw_avail' => 'Feb-98',
%% 'hw_vendor' => 'IBM',
%% 'PRIME_PARAM' => ' -t 600 -w 300 -p 12 -d 0 -f /usr/spec/specweb-4.8/workload -k /usr/spec/specweb-4.8/getvm-io en1host1 en2host1 en3host1 en4host1 en7host1 en8host1 en9host1',
%% 'net_nnets' => 6,
%% 'LOAD_VALUES' => [
%% 680,
%% 1360,
%% 2040,
%% 2720,
%% 3400,
%% 4080,
%% 4760,
%% 5440,
%% 6120,
%% 6800
%% ],
%% 'results' => [
%% [
%% 6800,
%% 6716,
%% '8.5',
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 1410477,
%% '0',
%% '5.72',
%% '57.96',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 2014845,
%% '0',
%% '5.86',
%% '45.23',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 564088,
%% '0',
%% '12.70',
%% '92.31',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 40291,
%% '0',
%% '188.13',
%% '604.36',
%% '0',
%% '0'
%% ]
%% ]
%% ]
%% ],
%% 'WNOHANG' => 1,
%% 'http_cache' => 'FRCA (Integrated)',
%% 'hw_controllers' => 'Wide SCSI I/O Controller',
%% 'SERVER' => 'enserver',
%% 'company_name' => 'IBM',
%% 'sw_vendor' => 'IBM',
%% 'Volume' => '--',
%% 'RCPFROM' => 'rcp -p $user@$host:$file $file',
%% 'munge_date' => 1,
%% 'WAIT_TO_COLLECT' => '0',
%% 'Page' => '--',
%% 'test_date' => 'Mar-99',
%% 'notes_diagram' => 'SUT <======> LG',
%% 'hw_other' => [
%% 'ForeRunner LE 155 ATM Switch',
%% 'Alteon ACESwitch 180'
%% ],
%% 'monitor_post_run' => '',
%% 'hw_pcache' => '32KBI+32KBD cache',
%% 'lg_model' => '7 RS/6000 7043-260',
%% 'RUN_TIME' => 600,
%% 'WORKLOAD_TYPE' => 'custom',
%% 'KILL_SLEEP' => 5,
%% 'http_logmode' => 'Binary Common Log Format',
%% 'RCPTO' => 'rcp -p $file $user@$host:$file',
%% 'hw_fpu' => '',
%% 'sw_http' => 'IBM HTTP Server 1.3.4',
%% 'notes_os' => [
%% '',
%% 'APAR IX86737 - AIX FRCA support'
%% ],
%% 'lg_memory' => '1GB',
%% 'MASTER' => 'en0host1',
%% 'http_avail' => 'Aug-99',
%% 'monitor_post' => '',
%% 'os_avail' => 'Aug-99',
%% 'hw_model' => 'RS/6000 7025 - H50',
%% 'OUTPUT_NAME' => 'output',
%% 'CLIENTS' => [
%% 'en1host1',
%% 'en2host1',
%% 'en3host1',
%% 'en4host1',
%% 'en7host1',
%% 'en8host1',
%% 'en9host1'
%% ],
%% 'license_num' => 11,
%% 'RESULTS' => [
%% [
%% 680,
%% 680,
%% '2.1',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 142749,
%% '0',
%% '1.18',
%% '3.41',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 204060,
%% '0',
%% '1.50',
%% '3.83',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 57114,
%% '0',
%% '4.07',
%% '6.19',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 4074,
%% '0',
%% '34.27',
%% '35.75',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 1360,
%% 1360,
%% '2.2',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 285607,
%% '0',
%% '1.29',
%% '11.08',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 407918,
%% '0',
%% '1.60',
%% '3.96',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 114282,
%% '0',
%% '4.28',
%% '6.36',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 8172,
%% '0',
%% '35.94',
%% '37.74',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 2040,
%% 2040,
%% '2.4',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 428294,
%% '0',
%% '1.40',
%% '3.71',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 612002,
%% '0',
%% '1.73',
%% '4.12',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 171413,
%% '0',
%% '4.53',
%% '6.57',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 12243,
%% '0',
%% '38.33',
%% '40.66',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 2720,
%% 2720,
%% '2.6',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 571249,
%% '0',
%% '1.58',
%% '3.93',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 815981,
%% '0',
%% '1.89',
%% '4.29',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 228398,
%% '0',
%% '4.84',
%% '6.85',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 16313,
%% '0',
%% '41.51',
%% '44.54',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 3400,
%% 3400,
%% '2.9',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 713945,
%% '0',
%% '1.78',
%% '4.16',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 1019911,
%% '0',
%% '2.09',
%% '4.50',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 285647,
%% '0',
%% '5.24',
%% '7.22',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 20399,
%% '0',
%% '44.90',
%% '48.54',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 4080,
%% 4080,
%% '3.2',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 856791,
%% '0',
%% '2.04',
%% '7.63',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 1223943,
%% '0',
%% '2.32',
%% '4.74',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 342651,
%% '0',
%% '5.72',
%% '7.87',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 24468,
%% '0',
%% '49.24',
%% '54.31',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 4760,
%% 4759,
%% '3.6',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 999501,
%% '0',
%% '2.34',
%% '7.47',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 1427839,
%% '0',
%% '2.62',
%% '8.54',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 399799,
%% '0',
%% '6.31',
%% '8.22',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 28555,
%% '0',
%% '54.60',
%% '60.25',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 5440,
%% 5438,
%% '4.0',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 1142024,
%% '0',
%% '2.73',
%% '5.21',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 1631426,
%% '0',
%% '2.98',
%% '5.41',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 456768,
%% '0',
%% '7.00',
%% '12.30',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 32631,
%% '0',
%% '60.98',
%% '77.70',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 6120,
%% 6122,
%% '4.8',
%% undef,
%% [
%% [
%% '0',
%% '0.350',
%% '0.350',
%% 1285661,
%% '0',
%% '3.37',
%% '7.73',
%% '0',
%% '0'
%% ],
%% [
%% 1,
%% '0.500',
%% '0.500',
%% 1836718,
%% '0',
%% '3.62',
%% '8.47',
%% '0',
%% '0'
%% ],
%% [
%% 2,
%% '0.140',
%% '0.140',
%% 514297,
%% '0',
%% '8.20',
%% '15.13',
%% '0',
%% '0'
%% ],
%% [
%% 3,
%% '0.010',
%% '0.010',
%% 36745,
%% '0',
%% '70.61',
%% '79.91',
%% '0',
%% '0'
%% ]
%% ]
%% ],
%% [
%% 6800,
%% 6716,
%% '8.5',
%% undef,
%% [
%% undef,
%% undef,
%% undef,
%% undef
%% ]
%% ]
%% ],
%% 'PASSWORD' => '',
%% 'LOG_SUFFIX' => '.err',
%% 'lg_params' => '',
%% 'hw_memory' => '3072 MB',
%% 'PRIME_MON_SCRIPT' => 'getvm-io',
%% 'CLIENT_USER' => 'root',
%% 'lg_num' => 7,
%% 'SETUP_CLIENTS' => '0',
%% 'WORKLOAD_FILE' => 'workload',
%% 'sw_compiler' => 'IBM Cset++ Version 3.1.3',
%% 'lg_ncpu' => 2,
%% 'WARMUP_TIME' => 300,
%% 'sw_other' => 'None',
%% 'net_net' => 'ATM & Jumbo Frame Gigabit',
%% 'RSH' => 'rsh $host -l $user "$command"',
%% 'test_time' => 'Thu Mar 18 16:26:24 CST 1999',
%% 'net_notes' => [
%% '',
%% 'ATM MTU=9180 & Jumbo Frame Gigabit MTU=9000',
%% '1 client per ATM network, 1 client on one Jumbo Frame Gigabit network, & 2 clients on the other Jumbo Frame Gigabit network'
%% ],
%% 'RESULT_SUFFIX' => '.out',
%% 'hw_ncpu' => 4,
%% 'lg_os' => 'AIX 4.3.2',
%% 'URL_ROOT' => '/file_set',
%% 'tester_name' => 'IBM Austin',
%% 'net_speed' => [
%% '155 Mb/sec for ATM',
%% '1000 Mb/sec for Jumbo Frame Gigabit'
%% ],
%% 'CLEANUP_TMP' => 'rm -f /tmp/laddis_*',
%% 'lg_procs' => 12,
%% 'lg_cpu' => '200 MHz POWER3',
%% 'ARCH' => 'unix',
%% 'REAP_SLEEP' => 5,
%% 'FILENAME' => 'rc',
%% 'WORK_DIR' => '/usr/spec/specweb-4.8',
%% 'monitor_pre_run' => '',
%% 'zero_text' => '',
%% 'MAX_LOAD' => 6800,
%% 'hw_cpu' => '332 MHz PowerPC 604e',
%% 'version' => '4.3',
%% 'PROCS' => 12,
%% 'DEBUG' => '0',
%% 'hw_disk' => '3 16 Bit SCSI Disk Drivers ( 9100 MB )',
%% 'notes' => [
%% '',
%% 'server no (network option) tuning:',
%% 'no -o sb_max=262144 (max buffer size allowed for a socket, default=65536)',
%% 'no -o somaxconn=8192 (max listen backlog, default=1024)',
%% 'no -o nbc_max_cache=100000 (max file size for network buffer cache, default=1048576)',
%% 'no -o nbc_seg_limit=10000 (number of entry allowed in private segment, default=0)',
%% 'no -o tcp_sendspace=28000 (default socket send buffer size, default=16384)',
%% 'no -o tcp_recvspace=28000 (default socket receive buffer size, default=16384)',
%% 'no -o tcp_timewait=5 (ensure that TIME_WAIT is at least 60 seconds, default=1)',
%% 'bind FRCA logging thread to CPU 0',
%% 'FRCA logging - BINARY',
%% 'client no (network option) tuning:',
%% 'no -o tcp_sendspace=28000 (default socket send buffer size, default=16384)',
%% 'no -o tcp_recvspace=28000 (default socket receive buffer size, default=16384)',
%% 'no -o delayack=3 (delay ack for connection setup and shutdown, default=0)',
%% 'no -o delayackports={80} (delay ack ports, default={})',
%% 'Alternate HTTP/HT.c used. Repeated client-side calls \'gethostbyname()\' ommitted, as approved by SPEC.',
%% 'No change in measured server performance but reduction in client load.'
%% ],
%% 'http_servers' => 6,
%% 'FILESET_DIR' => '/tmp/spec_html',
%% 'sw_state' => 'Multiuser',
%% 'net_controller' => [
%% '4 IBM PCI 155 Mbps ATM Adapters',
%% '2 PCI Gigabit Ethernet-SX Adapters'
%% ],
%% 'sw_os' => 'AIX 4.3.2 + APAR IX86737',
%% 'msl' => 30,
%% 'lg_compiler' => 'IBM Cset++ Version 3.1.3',
%% 'monitor_pre' => '',
%% 'CLIENT_PARAM' => ' -t 600 -w 300 -p 12 -d 0 -f /usr/spec/specweb-4.8/workload -M en0host1',
%% 'machine_name' => 'RS/6000 7025-H50',
%% 'SPECweb96' => 6716,
%% 'WAIT_BETWEEN_POINTS' => 60,
%% 'WAIT_TO_BEGIN' => 30,
%% 'net_nctrls' => 6,
%% 'CLIENT_DIR' => '/usr/spec/specweb-4.8',
%% 'USER' => 'root',
%% 'LOAD_FILE' => 'load_value',
%% 'RESULT_NAME' => 'res'
%% };
%%
%% END SPECWEB96 1.00
/x { initgraphics clear erasepage (test.ps) run } def
/debug {
dup =string cvs print (: ) print
load =string cvs print (
) print
} bind def
/Italic /Times-Italic findfont def
/Bold /Times-Bold findfont def
/Roman /Times-Roman findfont def
/Fixed /Courier findfont def
/Symbol /Symbol findfont def
/mean_title_offset 0 def
/figure_of_merit (6716) def
/invalid_run false def
/Page_offset 1 def
/Volume () def
/Issue () def
/Page () def
/company_name (IBM) def
/machine_name (RS/6000 7025-H50) def
/license_num (11) def
/tester_name (IBM Austin) def
/test_date (Mar-99) def
/hw_avail (Feb-98) def
/os_avail (Aug-99) def
/http_avail (Aug-99) def
/hardware [
[ (Model Name:) (RS/6000 7025 - H50) ]
[ (Processor:) (332 MHz PowerPC 604e) ]
[ (# of Processors:) (4) ]
[ (Primary Cache:) (32KBI+32KBD cache) ]
[ (Secondary Cache:) (256KB L2 cache per processor) ]
[ (Other Cache:) (None) ]
[ (Memory:) (3072 MB) ]
[ (Disk Subsystem:) (3 16 Bit SCSI Disk Drivers ( 9100 MB )) ]
[ (Disk Controllers:) (Wide SCSI I/O Controller) ]
[ (Other Hardware:) () ]
] def
/software [
[ (Operating System:) (AIX 4.3.2 + APAR IX86737) ]
[ (File System:) (JFS) ]
[ (Other Software:) (None) ]
] def
/notes [
(ATM MTU=9180 & Jumbo Frame Gigabit MTU=9000)
(1 client per ATM network, 1 client on one Jumbo Frame Gigabit network, & 2 clients on the other Jumbo Frame Gigabit network)
(server no (network option) tuning:)
(no -o sb_max=262144 (max buffer size allowed for a socket, default=65536))
(no -o somaxconn=8192 (max listen backlog, default=1024))
(no -o nbc_max_cache=100000 (max file size for network buffer cache, default=1048576))
(no -o nbc_seg_limit=10000 (number of entry allowed in private segment, default=0))
(no -o tcp_sendspace=28000 (default socket send buffer size, default=16384))
(no -o tcp_recvspace=28000 (default socket receive buffer size, default=16384))
(no -o tcp_timewait=5 (ensure that TIME_WAIT is at least 60 seconds, default=1))
(bind FRCA logging thread to CPU 0)
(FRCA logging - BINARY)
(client no (network option) tuning:)
(no -o tcp_sendspace=28000 (default socket send buffer size, default=16384))
(no -o tcp_recvspace=28000 (default socket receive buffer size, default=16384))
(no -o delayack=3 (delay ack for connection setup and shutdown, default=0))
(no -o delayackports={80} (delay ack ports, default={}))
(Alternate HTTP/HT.c used. Repeated client-side calls 'gethostbyname()' ommitted, as approved by SPEC.)
(No change in measured server performance but reduction in client load.)
(APAR IX86737 - AIX FRCA support)
] def
/network [
[ (# of Controllers:) (6) ]
[ (Network Controllers:) (Ethernet-SX Adapters
) ]
[ (# of Nets:) (6) ]
[ (Type of Nets:) (ATM & Jumbo Frame Gigabit) ]
[ (Network Speed:) (Gigabit
) ]
[ (Time Wait (secs):) (60 (Non RFC1122)) ]
] def
/http [
[ (Vendor:) (IBM) ]
[ (HTTP Software:) (IBM HTTP Server 1.3.4) ]
[ (# of "threads":) (6) ]
[ (Server Cache:) (FRCA (Integrated)) ]
[ (Log Mode:) (Binary Common Log Format) ]
] def
/loadgen [
[ (# of Load Generators:) (7) ]
[ (# of Processes Each:) (12) ]
[ (Model:) (7 RS/6000 7043-260) ]
[ (Processor:) (200 MHz POWER3) ]
[ (# of CPUs:) (2) ]
[ (Memory:) (1GB) ]
[ (OS:) (AIX 4.3.2) ]
[ (Compiler:) (IBM Cset++ Version 3.1.3) ]
] def
/benchconf [
[ (Max Requested Load:) (6800) ]
[ (Max Fileset Size (MB):) (1801) ]
] def
/series_data [
[ (680) (2.1) ]
[ (1360) (2.2) ]
[ (2040) (2.4) ]
[ (2720) (2.6) ]
[ (3400) (2.9) ]
[ (4080) (3.2) ]
[ (4759) (3.6) ]
[ (5438) (4.0) ]
[ (6122) (4.8) ]
[ (6716) (8.5) ]
] def
/min_x 680 def
/min_y 2.1 def
/starttime usertime def % for profiling
/=string where {
pop
} {
/=string 128 string def
} ifelse
% change this to true if you have trouble printing this file. This will
% enable the error handler to tell you what the problem is
false {
errordict begin
/handleerror {
systemdict begin
initgraphics
/Courier findfont 12 scalefont setfont
72 720 moveto
(Postscript problem: ) show
/errorname get
=string cvs show
72 700 moveto
(Command: ) show
/command get
=string cvs show
systemdict /showpage get exec
end
} def
end
} if
/SPECdict 80 dict def
SPECdict begin
/a4_size [ 595 842 ] def
/letter_size [ 612 792 ] def
/inch { 72 mul } def
/cm { 28.35 mul } def
/border 0.5 inch def
/page_size letter_size dup dup 0 get border 2 mul sub 0 exch put
dup dup 1 get border 2 mul sub 1 exch put
def
/Colors where {
/color_enabled deviceinfo /Colors get 1 gt def
pop
} {
/color_enabled false def
} ifelse
/xtilt {
[ 1 0
4 -1 roll
sin
1 0 0 ]
concat
} bind def
/charheight {
gsave
newpath
0 0 moveto
false charpath
flattenpath pathbbox
exch pop
3 -1 roll pop
grestore
} bind def
/smart_cvr {
dup (N/A) eq {
pop
0
} {
dup (--) eq {
pop
0
} {
dup () eq {
pop
0
} {
cvr
} ifelse
} ifelse
} ifelse
} def
/smart_cvi {
dup (N/A) eq {
pop
0
} {
dup (--) eq {
pop
0
} {
dup () eq {
pop
0
} {
cvi
} ifelse
} ifelse
} ifelse
} def
/stringmetrics {
/uly 0.0 def
/lly 0.0 def
{
( ) dup 0 4 -1 roll put
charheight
dup uly gt {
/uly exch def
} {
pop
} ifelse
dup lly lt {
/lly exch def
} {
pop
} ifelse
} bind forall
lly
uly
} bind def
/stringheight {
stringmetrics
exch sub
} bind def
/descender {
stringmetrics
pop
} bind def
% Draw a box.
% x y width height ->
/boxit {
gsave
newpath
4 2 roll
translate
0 0 moveto
dup 0 exch lineto
2 copy lineto
pop 0 lineto
closepath
stroke
grestore
} bind def
% Draw a filled box.
% x y width height ->
/shadeboxit {
gsave
newpath
4 2 roll
translate
0 0 moveto
dup 0 exch lineto
2 copy lineto
pop 0 lineto
closepath
gsave
0.95 setgray
fill
grestore
stroke
grestore
} bind def
% Draw a shaded rectangular area.
% x y width height ->
/shadeit {
gsave
4 2 roll
translate
0 0 moveto
dup 0 exch lineto
2 copy lineto
pop 0 lineto
closepath
0.9 setgray
fill
grestore
} bind def
% This will set the origin and scale so that the figure will fill the area
% width height desired_width desired_height ->
/maxpect { % w h dw dh
1 index 4 index div % w h dw dh dw/w
1 index 4 index div % w h dw dh dw/w dh/h
2 copy lt {
pop dup % w h dw dh dw/w dw/w
5 -1 roll mul % w dw dh dw/w dw/w*h
3 -1 roll exch sub % w dw dw/w dh-dw/w*h
2 div 0 exch % w dw w/dw 0 (dh-w/dw*h)/2
} {
exch pop dup % w h dw dh h/dh h/dh
6 -1 roll % h dw dh h/dh h/dh w
mul 4 -1 roll exch % h dh h/dh dw h/dh*w
sub 2 div 0 % h dh h/dh (dw-h/dh*w)/2 0
} ifelse
translate
dup
scale
pop pop
} bind def
% This will return a scale that will make the current font fit the area
% strings max_size desired_width desired_height ->
/maxtext { % w h dw dh
10 dict begin
/y_size exch def
/x_size exch def
gsave
/max_size exch def
/strings exch def
/ref_width 0 def
/ref_height 0 def
/count 0 def
strings {
/count count 1 add def
dup stringwidth pop dup ref_width gt { /ref_width exch def }
{ pop } ifelse
stringmetrics exch pop dup ref_height gt { /ref_height exch def }
{ pop } ifelse
} forall
ref_width 0 gt ref_height 0 gt and {
x_size ref_width div
y_size ref_height count mul div
2 copy gt { exch } if pop
max_size 2 copy gt { exch } if pop
} {
99999
} ifelse
grestore
end
} def
% This will return a scale that will make the current font fit the area
% strings max_size curr_size desired_width desired_height ->
/maxtext_rh { % w h dw dh
10 dict begin
/y_size exch def
/x_size exch def
gsave
/ref_height exch def
/max_size exch def
/strings exch def
/ref_width 0 def
/count 0 def
strings {
/count count 1 add def
stringwidth pop dup ref_width gt { /ref_width exch def }
{ pop } ifelse
} forall
ref_width 0 gt ref_height 0 gt and {
x_size ref_width div
y_size ref_height count mul div
2 copy gt { exch } if pop
max_size 2 copy gt { exch } if pop
} {
99999
} ifelse
grestore
end
} def
% Function: Concatenates two strings together.
% string1 string2 append string
/append {
2 copy length exch length add % find the length of the new.
string dup % string1 string2 string string
4 2 roll % string string string1 string2
2 index 0 3 index % string string string1 string2 string 0 string1
putinterval % stuff the first string in.
% string string string1 string2
exch length exch putinterval
} bind def
/cropmark {
gsave
color_enabled {
1.0 0.0 0.0 setrgbcolor
} if
2 copy 20 sub moveto
2 copy 20 add lineto stroke
exch
2 copy 20 sub exch moveto
20 add exch lineto stroke
grestore
} bind def
/rshow {
dup stringwidth pop
neg 0 rmoveto show
} bind def
/center_show {
dup stringwidth pop 2 div
neg 0 rmoveto show
} bind def
/sigshow {
dup 0 gt {
(0) stringwidth pop mul
2 cvr dup cvi ne {
(.) stringwidth pop add
} if
neg 0 rmoveto
} {
pop
} ifelse
dup stringwidth pop
neg 0 rmoveto show
} bind def
% value -> tick tickval
/tickit {
10 dict begin
/largest exch def
/multiplier 1 def
/found false def
{
[ 1 2 3 5 ]
{
multiplier mul /tick_val exch def
[ 5 6 7 8 9 10 ]
{
/ticks exch def
ticks tick_val mul dup largest ge {
/largest exch def
/found true def exit
} {
pop
} ifelse
} forall
found { exit } if
} forall
found { exit } if
/multiplier multiplier 10 mul def
} loop
ticks
tick_val
end
} bind def
%%EndProlog
%%Page: one 1
%%BeginPageSetup
/pageSave save def
%%EndPageSetup
% Build a spec logo (that looks closer to the button)
/SPEClogo {
10 dict begin
/logo_y_size exch def
/logo_x_size exch def
gsave
Bold 1 inch scalefont setfont
% move the origin to the "desired" lower left hand corner
translate
% find out how big we are unscaled
(spec) dup stringwidth pop 1 mul /width exch def
dup dup stringheight exch stringmetrics exch pop 0.4 mul add
/height exch def
/grid_size width 0.54 mul def
/lines 4 def
/line_space grid_size lines div def
/height height grid_size add def
0 0 width 1.2 mul height 1.2 mul 2 copy logo_x_size logo_y_size maxpect
boxit
width 0.1 mul height 0.1 mul translate
dup descender 0 exch sub 0 exch translate
0 0 moveto dup show
stringmetrics 0 exch 1.4 mul translate pop
% Draw Grid
line_space line_space grid_size 1 sub {
dup 0 exch moveto
dup grid_size exch lineto
dup 0 moveto
grid_size lineto
stroke
} for
0 0 moveto
0 grid_size lineto
grid_size grid_size lineto
grid_size 0 lineto
closepath
stroke
% Draw curve
line_space line_space 4 div sub dup 2 copy moveto
exch line_space 1.5 mul add exch
grid_size line_space dup 4 div sub sub dup 2 copy
line_space 1.5 mul sub 4 2 roll
curveto
color_enabled {
1.0 0.0 0.0 setrgbcolor
} if
stroke
Italic line_space 0.9 mul scalefont setfont
false {
gsave
grid_size line_space 0.1 mul add line_space 1.5 mul moveto
40 rotate 40 xtilt (Better) show
grestore
gsave
grid_size line_space 0.1 mul add line_space 0.5 mul moveto
40 rotate 40 xtilt (Benchmarks) show
grestore
} if
grestore
end
} def
/SPECbanner {
20 dict begin
/y_size exch def
/x_size exch def
/y_loc exch def
/x_loc exch def
gsave
x_loc y_loc translate
% draw a box around the area
0 0 x_size y_size boxit
% draw the logo
y_size 0.1 mul dup dup y_size exch 2 mul sub dup SPEClogo
% draw the title
gsave
y_size y_size 0.2 mul translate
Bold 72 scalefont setfont
(SPECweb96 Result) dup dup
stringwidth pop exch stringheight
x_size y_size dup 0.1 mul add sub % remaining x size
y_size 0.55 mul % remaining y size
maxpect
0 y_size 0.2 mul moveto show
grestore
gsave
y_size y_size 0.1 mul translate
Symbol 10 scalefont dup /Symb10 exch def setfont
(\343) dup dup stringwidth pop exch stringheight % s1 s1w s1h
Roman 10 scalefont dup /Roman10 exch def setfont
(Copyright 1996, Standards Performance Evaluation Corporation)
dup dup stringwidth pop exch stringheight %s1 s1w s1h s2 s2w s2h
5 -2 roll 3 -1 roll add 3 1 roll add exch % s1 s2 s2w+s1w s1h+s2h
x_size y_size dup 0.1 mul add sub % remaining x size
y_size 0.3 mul dup 0.0 mul sub % remaining y size
maxpect
0 0 moveto
Symb10 setfont exch show
Roman10 setfont show
grestore
grestore
end
} def
/SPECpage {
gsave
4 2 roll translate
2 copy 0 0 4 2 roll boxit % w h
dup 0.7 mul Roman exch scalefont setfont
(Volume: ) Volume append
( Issue: ) append Issue append
Page dup smart_cvi Page_offset add 2 mod 0 eq { exch } if
2 copy append descender neg % w h s1 s2 d
/desc exch def
2 index 0.2 mul dup desc add moveto show
3 1 roll
0.2 mul dup 3 -1 roll exch sub exch desc add
moveto rshow
grestore
} def
/SPECtitle {
4 copy
10 dict begin
gsave
4 2 roll translate
/height exch def
dup
/width exch 0.3 mul def
width sub dup
gsave
0 translate
% 0 0 width height 2 div shadeit
0 0 width height boxit
height 0.7 mul 2 div
Roman exch scalefont setfont
% titles
(SPECweb96)
dup stringheight 2 div height 0.75 mul exch sub
dup /y1 exch def
8 exch moveto
show
width dup 0.37 mul sub height 0.1 mul sub y1 moveto
(=) show
width 8 sub y1 moveto
% means 1 get mean_title_offset 1 get sigshow
figure_of_merit mean_title_offset sigshow
height 0.7 mul 3 div
Roman exch scalefont setfont
(Test Date)
dup stringheight 2 div height 0.4 mul exch sub
dup /y2 exch def
8 exch moveto
show
width dup 0.60 mul sub height 0.1 mul sub y2 moveto
(:) show
width 8 sub y2 moveto
test_date rshow
(Tested by)
dup stringheight 2 div height 0.2 mul exch sub
dup /y3 exch def
8 exch moveto
show
width dup 0.60 mul sub height 0.1 mul sub y3 moveto
(:) show
width 8 sub y3 moveto
tester_name rshow
grestore
/width exch def
gsave
Roman 10 scalefont dup setfont
[ company_name machine_name ] 3.2 width height 0.2 mul sub
height 0.7 mul maxtext
dup /font_size exch def
scalefont setfont
[ company_name machine_name ] dup length /count exch 1 sub def {
height 0.1 mul
count font_size mul 10 mul height 0.1 mul add moveto
show
/count count 1 sub def
} forall
grestore
grestore
end
boxit
} def
/SPECinfobar {
gsave
4 2 roll translate
/height exch def
/width exch def
Roman height 0.7 mul scalefont setfont
[
[ (Hardware Avail:) hw_avail .28 ]
[ (OS Avail:) os_avail .28 ]
[ (HTTP Software Avail:) http_avail .28 ]
[ (SPEC license #:) license_num .16 ]
]
dup length
0 exch 1 exch 1 sub {
2 copy get exch pop aload pop
width mul /sub_width exch def
0 0 sub_width height boxit
height 0.2 mul dup moveto exch show
height 0.2 mul dup sub_width exch sub exch moveto rshow
sub_width 0 translate % move for next iteration
} for
pop
grestore
} def
/SPECadvertisement {
gsave
4 2 roll translate
/height exch def
/width exch def
0 0 moveto
0 height rlineto
width 0 rlineto
0 height neg rlineto
closepath
gsave
.97 setgray
fill
grestore
stroke
Roman height 0.25 mul scalefont setfont
[
[ (For More) (Information) (contact) 0 .33 ]
[ (SPEC)
(10754 Ambassador Drive, Suite 201)
(Manassas, VA 22110) 1 .33 ]
[ (\(703\) 331-0180)
(info@specbench.org)
(http://www.specbench.org/) 2 .33 ]
]
dup length
0 exch 1 exch 1 sub {
2 copy get exch pop aload pop
width mul /sub_width exch def
dup 2 eq {
pop
height 0.2 mul dup sub_width exch sub exch moveto rshow
sub_width height 0.2 mul sub height 0.45 mul moveto rshow
sub_width height 0.2 mul sub height 0.7 mul moveto rshow
} {
0 eq {
height 0.2 mul dup moveto show
height 0.2 mul height 0.45 mul moveto show
height 0.2 mul height 0.7 mul moveto show
} {
sub_width 2 div height 0.2 mul moveto center_show
sub_width 2 div height 0.45 mul moveto center_show
sub_width 2 div height 0.7 mul moveto center_show
} ifelse
} ifelse
sub_width 0 translate % move for next iteration
} for
pop
grestore
} def
/SPECwebgraph {
200 dict begin
gsave
4 2 roll translate
2 copy 0 0 4 2 roll boxit
/height exch def
/width exch def
/sub_width width .1 mul def
0 0 sub_width height shadeboxit
sub_width 0 sub_width height shadeboxit
/title_size 8 def
Roman title_size scalefont setfont
/sub_height height title_size 2 mul sub def
sub_width .5 mul height title_size sub moveto
(Throughput) center_show
sub_width 1.5 mul height title_size sub moveto
(Response) center_show
0 title_size neg translate
sub_width .5 mul height title_size sub moveto
(ops/sec) center_show
sub_width 1.5 mul height title_size sub moveto
(msec) center_show
gsave
0 sub_height translate
/size_x sub_width 16 sub def
/size_y sub_height 16 sub def
sub_height series_data length div
10 2 copy lt { pop } { exch pop } ifelse
/font_size exch def
Roman font_size scalefont setfont
0 -4 translate
/max_x 0 def
/max_y 0 def
0 1 series_data length 1 sub {
series_data exch get dup
0 get
dup smart_cvr dup max_x le { pop } { /max_x exch def } ifelse
sub_width font_size sub 0 moveto 0 sigshow
1 get
dup smart_cvr dup max_y le { pop } { /max_y exch def } ifelse
sub_width 2 mul font_size sub 0 moveto 0 sigshow
0 font_size neg translate
} for
grestore
gsave
max_x tickit /x_tick_val exch def /x_ticks exch def
max_y tickit /y_tick_val exch def /y_ticks exch def
sub_width 2 mul title_size translate
/sub_width width sub_width 2 mul sub 40 sub def
/sub_height sub_height 20 sub def
10 20 translate
Roman 10 scalefont setfont
gsave
(Response) dup % str
stringmetrics exch pop dup 3 1 roll % h str h
neg 90 rotate % h str -h
height 2 index % h str -h height str
stringwidth pop % h str -h height w
sub 2 div % h str -h (height-w)/2
exch
moveto show
grestore
sub_width exch sub /sub_width exch def
20 0 translate
1000 cvi =string cvs stringwidth pop dup
sub_width exch sub /sub_width exch def
0 translate
0 0 moveto 0 sub_height lineto stroke
0 0 moveto sub_width 0 lineto stroke
/x_dist sub_width x_ticks x_tick_val mul div def
/y_dist sub_height y_ticks y_tick_val mul div def
% x_ticks x_tick_val x_dist mul mul
% y_ticks y_tick_val y_dist mul mul cropmark
% ACA -- Dont start graph at 0,0 ... start line at first point
% 0 0 moveto
/start_x x_dist min_x mul def
/start_y y_dist min_y mul def
start_x start_y moveto
series_data {
aload pop
smart_cvr y_dist mul exch
smart_cvr x_dist mul exch
lineto
} forall
stroke
0 1 y_ticks {
dup
y_tick_val y_dist mul mul dup dup
-5 exch moveto 5 exch lineto stroke
-7 exch 3 sub moveto y_tick_val mul cvi =string cvs rshow
} for
0 1 x_ticks {
dup
x_tick_val x_dist mul mul dup dup
-5 moveto 5 lineto stroke
-15 moveto x_tick_val mul cvi =string cvs center_show
} for
grestore
grestore
end
} def
/SPECconfig {
40 dict begin
gsave
4 2 roll translate
/size_y exch def
/size_x exch def
/border size_y .1 mul dup 12 gt { pop 12 } if def
Roman 10 scalefont setfont
0 0 size_x size_y boxit
% gsave
% /sub_size_y size_y 0.12 mul def
% 0 size_y sub_size_y sub translate
% 0 0 size_x sub_size_y boxit
% [ (Hardware/Software Configuration for: ) machine_name ] dup
% 1.2 size_x border 2 mul sub sub_size_y 0.55 mul maxtext
% 10 mul Roman exch scalefont setfont
% aload pop
% dup descender neg sub_size_y 0.1 mul add
% size_x 2 div exch translate
% 0 0 moveto dup center_show
% stringheight sub_size_y 0.15 mul add 0 exch translate
% 0 0 moveto center_show
% grestore
%
% /size_y size_y sub_size_y sub def
Roman 5 scalefont setfont
hardware length software length http length add add /num_lines exch def
num_lines array /temp1_array exch def
num_lines array /temp2_array exch def
/i 0 def
hardware {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
software {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
http {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
temp1_array
2.4 size_x 0.40 mul border sub size_y 0.6 mul maxtext
temp2_array
2.4 size_x 0.60 mul border sub size_y 0.6 mul maxtext
2 copy lt { pop } { exch pop } ifelse
dup 1.20 lt {
pop
[ (A line in your configuration is too long)
(or you have too many lines.)
(Please fix the problem and try again) ] dup
1.2 size_x border sub size_y .8 mul maxtext
10 mul Roman exch scalefont setfont
size_y .1 mul size_y .9 mul translate
{
dup stringheight 0 exch 1.1 mul neg translate
0 0 moveto show
} forall
} {
5 mul Roman exch scalefont setfont
/line_space size_y 0.70 mul num_lines div def
0 size_y 0.95 mul translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(Hardware) center_show
grestore
hardware {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
0 size_y .1 mul neg translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(Software) center_show
grestore
software {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
0 size_y .1 mul neg translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(HTTP Software) center_show
grestore
http {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
} ifelse
grestore
end
} def
/SPECconfig2 {
40 dict begin
gsave
4 2 roll translate
/size_y exch def
/size_x exch def
/border size_y .1 mul dup 12 gt { pop 12 } if def
Roman 10 scalefont setfont
0 0 size_x size_y boxit
% gsave
% /sub_size_y size_y 0.12 mul def
% 0 size_y sub_size_y sub translate
% 0 0 size_x sub_size_y boxit
% [ (Network/HTTP Configuration for: ) machine_name ] dup
% 1.2 size_x border 2 mul sub sub_size_y 0.55 mul maxtext
% 10 mul Roman exch scalefont setfont
% aload pop
% dup descender neg sub_size_y 0.1 mul add
% size_x 2 div exch translate
% 0 0 moveto dup center_show
% stringheight sub_size_y 0.15 mul add 0 exch translate
% 0 0 moveto center_show
% grestore
%
% /size_y size_y sub_size_y sub def
Roman 5 scalefont setfont
benchconf length loadgen length network length add add 2 add /num_lines exch def
num_lines array /temp1_array exch def
num_lines array /temp2_array exch def
/i 0 def
network {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
loadgen {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
benchconf {
aload pop
temp2_array i 3 -1 roll put
temp1_array i 3 -1 roll put
/i i 1 add def
} forall
{
i num_lines ge { exit } if
temp2_array i (x) put
temp1_array i (x) put
/i i 1 add def
} loop
temp1_array
2.4 size_x 0.40 mul border sub size_y 0.6 mul maxtext
temp2_array
2.4 size_x 0.60 mul border sub size_y 0.6 mul maxtext
2 copy lt { pop } { exch pop } ifelse
dup 1.20 lt {
pop
[ (A line in your configuration is too long)
(or you have too many lines.)
(Please fix the problem and try again) ] dup
1.2 size_x border sub size_y .8 mul maxtext
10 mul Roman exch scalefont setfont
size_y .1 mul size_y .9 mul translate
{
dup stringheight 0 exch 1.1 mul neg translate
0 0 moveto show
} forall
} {
5 mul /font_size exch def
Roman font_size scalefont setfont
/line_space size_y 0.80 mul num_lines div def
0 size_y 0.95 mul translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(Network) center_show
grestore
network {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
% 0 size_y .1 mul neg translate
0 font_size 2 mul neg translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(Load Generators) center_show
grestore
loadgen {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
% 0 size_y .1 mul neg translate
0 font_size 2 mul neg translate
gsave
size_y .05 mul Bold exch scalefont setfont
size_x 2 div 0 moveto
(Benchmark Configuration) center_show
grestore
benchconf {
aload pop
0 line_space neg translate
size_x 0.40 mul 0 moveto show
border 0 moveto show
} forall
} ifelse
grestore
end
} def
/SPECnotes {
gsave
4 2 roll translate
/size_y exch def
/size_x exch def
0 0 size_x size_y boxit
12 dup dup translate
dup 2 mul exch size_y exch sub /size_y exch def
size_x exch sub /size_x exch def
0 size_y 12 sub translate
gsave
Bold 12 scalefont setfont
size_x 2 div 0 moveto
(Notes/Tuning Information) center_show
grestore
0 -5 translate
/size_y size_y 12 5 add sub def
Fixed 10 scalefont setfont
% notes 1.2 .9 div size_x size_y maxtext
notes 1.2 .9 div 10 size_x size_y maxtext_rh
dup 0.60 lt {
pop
[ (A line in your notes/tuning section is too long or )
(you have too many lines.) append
(Please fix the problem and try again) ] dup
1.2 size_x 12 sub size_y .9 mul maxtext
10 mul Roman exch scalefont setfont
{
dup stringheight 0 exch 1.1 mul neg translate
0 0 moveto show
} forall
} {
10 mul
dup /line_space exch def
Fixed exch scalefont setfont
notes {
% dup stringheight 0 exch neg translate
0 line_space neg translate
0 0 moveto show
} forall
} ifelse
grestore
} def
border border translate
/height_left page_size 1 get def
/page_x page_size 0 get def
/page_y page_size 1 get def
0 0 page_x page_y boxit
/test false def
page_y 0.05 mul
0 height_left 2 index sub page_x 3 index
test {
boxit
} {
SPECbanner
} ifelse
height_left exch sub /height_left exch def
12
0 0 page_x 3 index
test {
boxit
} {
SPECpage
} ifelse
dup height_left exch sub /height_left exch def
0 exch translate
page_y 0.07 mul
0 height_left 2 index sub page_x 3 index
test {
boxit
} {
SPECtitle
} ifelse
height_left exch sub /height_left exch def
12
0 height_left 2 index sub page_x 3 index
test {
boxit
} {
SPECinfobar
} ifelse
height_left exch sub /height_left exch def
32
0 0 page_x 3 index
test {
boxit
} {
SPECadvertisement
} ifelse
dup height_left exch sub /height_left exch def
0 exch translate
page_y 0.25 mul
0 height_left 2 index sub page_x 3 index
test {
boxit
} {
SPECwebgraph
} ifelse
height_left exch sub /height_left exch def
0.45
page_y 0.30 mul
0 height_left 2 index sub page_x 4 index mul 3 index
test {
boxit
} {
SPECconfig
} ifelse
page_x
2 index mul height_left 2 index sub page_x dup 6 -1 roll mul sub 3 index
test {
boxit
} {
SPECconfig2
} ifelse
height_left exch sub /height_left exch def
0 0 page_x height_left
test {
boxit
} {
SPECnotes
} ifelse
invalid_run test not and {
gsave
Roman 10 scalefont setfont
0 page_y .25 mul translate
page_y .50 mul page_x atan dup rotate
currentlinewidth 1.5 mul setlinewidth
pop page_y .5 mul dup mul page_x 0.8 mul dup mul add sqrt
(INVALID RUN) dup 1 array astore
9999 4 -1 roll 9999 maxtext
10 mul Roman exch scalefont setfont
page_x 0.1 mul 0 moveto false charpath stroke
grestore
} if
false {
Roman 12 scalefont setfont
0 0 moveto (UserTime: ) show usertime starttime sub 1000 div
dup =string cvs show
(Render Time: ) print =string cvs print (\n) print
} if
showpage
pageSave restore
%%PageTrailer
%%Trailer
end
%%EOF