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