blob: 86fe6bbc0901283f30b943fb2a4bccefd685f60d [file] [log] [blame]
mbligh9f857922008-06-05 16:19:07 +00001import os
2from autotest_lib.client.bin import test, autotest_utils
3from autotest_lib.client.common_lib import utils, error
4
mblighb71116b2006-05-17 21:32:55 +00005
6class unixbench(test.test):
jadmanski0afbb632008-06-06 21:10:57 +00007 version = 2
mblighb71116b2006-05-17 21:32:55 +00008
mblighc5ddfd12008-08-04 17:15:00 +00009 def initialize(self):
10 self.job.require_gcc()
11
12
jadmanski0afbb632008-06-06 21:10:57 +000013 # http://www.tux.org/pub/tux/niemi/unixbench/unixbench-4.1.0.tgz
14 def setup(self, tarball = 'unixbench-4.1.0.tar.bz2'):
mbligh8b352852008-06-07 01:07:08 +000015 tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
jadmanski0afbb632008-06-06 21:10:57 +000016 autotest_utils.extract_tarball_to_dir(tarball, self.srcdir)
17 os.chdir(self.srcdir)
mblighb71116b2006-05-17 21:32:55 +000018
jadmanski0afbb632008-06-06 21:10:57 +000019 utils.system('patch -p1 < ../unixbench.patch')
20 utils.system('make')
mbligh8de9a4d2008-03-04 16:12:02 +000021
22
jadmanski0afbb632008-06-06 21:10:57 +000023 def execute(self, iterations = 1, args = '', stepsecs=0):
24 vars = ('TMPDIR=\"%s\" RESULTDIR=\"%s\"' %
25 (self.tmpdir, self.resultsdir))
26 profilers = self.job.profilers
27 keyval = open(self.resultsdir + '/keyval', 'w')
28 self.err = None
29 if stepsecs:
30 # change time per subtest from unixbench's defaults of
31 # 10 secs for small tests, 30 secs for bigger tests
32 vars += ' systime=%i looper=%i seconds=%i'\
33 ' dhrytime=%i arithtime=%i' \
34 % ((stepsecs,)*5)
35 if not profilers.only():
36 for i in range(iterations):
37 os.chdir(self.srcdir)
38 utils.system(vars + ' ./Run ' + args)
39 report = open(self.resultsdir + '/report')
40 self.format_results(report, keyval)
mbligh8de9a4d2008-03-04 16:12:02 +000041
jadmanski0afbb632008-06-06 21:10:57 +000042 # Do a profiling run if necessary
43 if profilers.present():
44 profilers.start(self)
45 utils.system(vars + ' ./Run ' + args)
46 profilers.stop(self)
47 profilers.report(self)
48
49 # check err string and possible throw
50 if self.err != None:
51 raise error.TestError(self.err)
mbligh5e3ad612007-10-12 23:34:37 +000052
53
jadmanski0afbb632008-06-06 21:10:57 +000054 def check_for_error(self, words):
55 l = len(words)
56 if l >= 3 and words[-3:l] == ['no', 'measured', 'results']:
57 # found a problem so record it in err string
58 key = '_'.join(words[:-3])
59 if self.err == None:
60 self.err = key
61 else:
62 self.err = self.err + " " + key
63 return True
64 else:
65 return False
mbligh5e3ad612007-10-12 23:34:37 +000066
jadmanski0afbb632008-06-06 21:10:57 +000067
68 def format_results(self, report, keyval):
69 for i in range(9):
70 report.next()
71 for line in report:
72 if not line.strip():
73 break
74
75 words = line.split()
76 # look for problems first
77 if self.check_for_error(words):
78 continue
79
80 # we should make sure that there are at least
81 # 6 guys before we start accessing the array
82 if len(words) >= 6:
83 key = '_'.join(words[:-6])
84 value = words[-6]
85 print >> keyval, '%s=%s' % (key, value)
86 for line in report:
87 if 'FINAL SCORE' in line:
88 print >> keyval, 'score=%s\n' % line.split()[-1]
89 break
mbligh5e3ad612007-10-12 23:34:37 +000090
91
92if __name__ == '__main__':
jadmanski0afbb632008-06-06 21:10:57 +000093 import sys
94 unixbench.format_results(sys.stdin, sys.stdout)
mbligh5e3ad612007-10-12 23:34:37 +000095
96
97""" Here is a sample report file:
98
99 BYTE UNIX Benchmarks (Version 4.1.0)
100 System -- Linux adrianbg 2.6.18.5 #1 SMP Thu J Start Benchmark Run: Tue Sep 1
101 9 interactive users.
102 21:03:50 up 5 days, 7:38, 9 users, load average: 0.71, 0.40, 0.25
103 lrwxrwxrwx 1 root root 4 Aug 15 09:53 /bin/sh -> bash
104 /bin/sh: symbolic link to `bash'
105 /dev/sda6 192149596 91964372 90424536 51% /home
106Dhrystone 2 using register variables 7918001.7 lps (10.0 secs, 10 samples)
107System Call Overhead 1427272.7 lps (10.0 secs, 10 samples)
108Process Creation 11508.6 lps (30.0 secs, 3 samples)
109Execl Throughput 4159.7 lps (29.7 secs, 3 samples)
110File Read 1024 bufsize 2000 maxblocks 1708109.0 KBps (30.0 secs, 3 samples)
111File Write 1024 bufsize 2000 maxblocks 788024.0 KBps (30.0 secs, 3 samples)
112File Copy 1024 bufsize 2000 maxblocks 452986.0 KBps (30.0 secs, 3 samples)
113File Read 256 bufsize 500 maxblocks 508752.0 KBps (30.0 secs, 3 samples)
114File Write 256 bufsize 500 maxblocks 214772.0 KBps (30.0 secs, 3 samples)
115File Copy 256 bufsize 500 maxblocks 143989.0 KBps (30.0 secs, 3 samples)
116File Read 4096 bufsize 8000 maxblocks 2626923.0 KBps (30.0 secs, 3 samples)
117File Write 4096 bufsize 8000 maxblocks 1175070.0 KBps (30.0 secs, 3 samples)
118File Copy 4096 bufsize 8000 maxblocks 793041.0 KBps (30.0 secs, 3 samples)
119Shell Scripts (1 concurrent) 4417.4 lpm (60.0 secs, 3 samples)
120Shell Scripts (8 concurrent) 1109.0 lpm (60.0 secs, 3 samples)
121Shell Scripts (16 concurrent) 578.3 lpm (60.0 secs, 3 samples)
122Arithmetic Test (type = short) 1843690.0 lps (10.0 secs, 3 samples)
123Arithmetic Test (type = int) 1873615.8 lps (10.0 secs, 3 samples)
124Arithmetic Test (type = long) 1888345.9 lps (10.0 secs, 3 samples)
125Arithmetic Test (type = float) 616260.3 lps (10.0 secs, 3 samples)
126Arithmetic Test (type = double) 615942.1 lps (10.0 secs, 3 samples)
127Arithoh 18864899.5 lps (10.0 secs, 3 samples)
128Dc: sqrt(2) to 99 decimal places 161726.0 lpm (30.0 secs, 3 samples)
129Recursion Test--Tower of Hanoi 89229.3 lps (20.0 secs, 3 samples)
130
131
132 INDEX VALUES
133TEST BASELINE RESULT INDEX
134
135Dhrystone 2 using register variables 116700.0 7918001.7 678.5
136Double-Precision Whetstone 55.0 1948.2 354.2
137Execl Throughput 43.0 4159.7 967.4
138File Copy 1024 bufsize 2000 maxblocks 3960.0 452986.0 1143.9
139File Copy 256 bufsize 500 maxblocks 1655.0 143989.0 870.0
140File Copy 4096 bufsize 8000 maxblocks 5800.0 793041.0 1367.3
141Pipe Throughput 12440.0 1048491.9 842.8
142Pipe-based Context Switching 4000.0 300778.3 751.9
143Process Creation 126.0 11508.6 913.4
144Shell Scripts (8 concurrent) 6.0 1109.0 1848.3
145System Call Overhead 15000.0 1427272.7 951.5
146 =========
147 FINAL SCORE 902.1
148"""