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