1 import os 2 import re 3 from autotest_lib.client.bin import test, utils 4 5 test_name = 'compilebench' 6 7 class compilebench(test.test): 8 version = 1 9 10 def setup(self, tarball = 'compilebench-0.6.tar.gz'): 11 self.tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir) 12 utils.extract_tarball_to_dir(self.tarball, self.srcdir) 13 os.chdir(self.srcdir) 14 utils.system('patch -p1 < ../compilebench.patch') 15 16 17 def run_once(self, dir=None, num_kernel_trees=10, num_random_runs=30): 18 if not dir: 19 dir = self.tmpdir 20 21 cmd = "%s -D %s -s %s -i %d -r %d" % ( 22 os.path.join(self.srcdir, test_name), 23 dir, 24 self.srcdir, 25 num_kernel_trees, 26 num_random_runs) 27 28 output = utils.system_output(cmd) 29 30 self.__format_results(output) 31 32 33 def __format_results(self, output): 34 keylist = {} 35 36 THROUGHPUT = "MB_s" 37 TIME = "secs" 38 39 run_type_list = ( 40 ('intial create', THROUGHPUT, 6, 'initial_create'), 41 ('create', THROUGHPUT, 5, 'new_create'), 42 ('patch', THROUGHPUT, 5, 'patch'), 43 ('compile', THROUGHPUT, 5, 'compile'), 44 ('clean', THROUGHPUT, 5, 'clean'), 45 ('read tree', THROUGHPUT, 6, 'read_tree'), 46 ('read compiled tree', THROUGHPUT, 7, 'read_compiled_tree'), 47 ('delete tree', TIME, 6, 'delete_tree'), 48 ('delete compiled tree', TIME, 6, 'delete_compiled_tree'), 49 ('stat tree', TIME, 6, 'stat_tree'), 50 ('stat compiled tree', TIME, 7, 'stat_compiled_tree'), 51 ) 52 53 # intial create total runs 10 avg 149.82 MB/s (user 0.63s sys 0.85s) 54 # create total runs 5 avg 27.50 MB/s (user 0.62s sys 0.83s) 55 # patch total runs 4 avg 15.01 MB/s (user 0.33s sys 0.63s) 56 # compile total runs 7 avg 41.47 MB/s (user 0.14s sys 0.75s) 57 # clean total runs 4 avg 697.77 MB/s (user 0.02s sys 0.08s) 58 # read tree total runs 2 avg 23.68 MB/s (user 0.85s sys 1.59s) 59 # read compiled tree total runs 1 avg 25.27 MB/s (user 0.98s sys 2.84s) 60 # delete tree total runs 2 avg 1.48 seconds (user 0.35s sys 0.45s) 61 # no runs for delete compiled tree 62 # stat tree total runs 4 avg 1.46 seconds (user 0.35s sys 0.26s) 63 # stat compiled tree total runs 1 avg 1.49 seconds (user 0.37s sys 0.29s) 64 65 for line in output.splitlines(): 66 for pattern, result_type, position, tag in run_type_list: 67 if re.search('^%s' % pattern, line): 68 l = line.split() 69 value = l[position] 70 71 s = "%s_%s" % (tag, result_type) 72 73 keylist[s] = value 74 break 75 76 self.write_perf_keyval(keylist) 77