aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>2017-03-23 13:57:04 +0200
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>2017-03-24 09:46:13 +0200
commit1e489ff526bd6a5cdaef3dd4ac8356bdc85cc4ac (patch)
treee61773a431eb112b41adddd64ab50b5b8e0d533c
parentc9609d3a8614aa2ae53b2e7646a5ae5a51b71357 (diff)
downloadopenembedded-core-contrib-1e489ff526bd6a5cdaef3dd4ac8356bdc85cc4ac.tar.gz
openembedded-core-contrib-1e489ff526bd6a5cdaef3dd4ac8356bdc85cc4ac.tar.bz2
openembedded-core-contrib-1e489ff526bd6a5cdaef3dd4ac8356bdc85cc4ac.zip
oe-build-perf-test: sum rusage in buildstats
Instead of separate rusage and child rusage values, only store their sum value in buildstats. This is a big reduction in data footprint without really losing any interesting data. Also, utilize OrderedDict to order data more logically. [YOCTO #10582] Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
-rw-r--r--meta/lib/oeqa/buildperf/base.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py
index ffe42dc87b0..aa5c5ad445c 100644
--- a/meta/lib/oeqa/buildperf/base.py
+++ b/meta/lib/oeqa/buildperf/base.py
@@ -411,9 +411,9 @@ class BuildPerfTestCase(unittest.TestCase):
def bs_to_json(filename):
"""Convert (task) buildstats file into json format"""
- bs_json = {'iostat': {},
- 'rusage': {},
- 'child_rusage': {}}
+ bs_json = OrderedDict()
+ iostat = OrderedDict()
+ rusage = OrderedDict()
with open(filename) as fobj:
for line in fobj.readlines():
key, val = line.split(':', 1)
@@ -425,7 +425,7 @@ class BuildPerfTestCase(unittest.TestCase):
end_time = datetime.utcfromtimestamp(float(val))
elif key.startswith('IO '):
split = key.split()
- bs_json['iostat'][split[1]] = int(val)
+ iostat[split[1]] = int(val)
elif key.find('rusage') >= 0:
split = key.split()
ru_key = split[-1]
@@ -433,12 +433,12 @@ class BuildPerfTestCase(unittest.TestCase):
val = float(val)
else:
val = int(val)
- ru_type = 'rusage' if split[0] == 'rusage' else \
- 'child_rusage'
- bs_json[ru_type][ru_key] = val
+ rusage[ru_key] = rusage.get(ru_key, 0) + val
elif key == 'Status':
bs_json['status'] = val
bs_json['elapsed_time'] = end_time - start_time
+ bs_json['rusage'] = rusage
+ bs_json['iostat'] = iostat
return bs_json
log.info('Saving buildstats in JSON format')
@@ -454,11 +454,11 @@ class BuildPerfTestCase(unittest.TestCase):
if not os.path.isdir(recipe_dir):
continue
name, epoch, version, revision = split_nevr(fname)
- recipe_bs = {'name': name,
- 'epoch': epoch,
- 'version': version,
- 'revision': revision,
- 'tasks': {}}
+ recipe_bs = OrderedDict((('name', name),
+ ('epoch', epoch),
+ ('version', version),
+ ('revision', revision),
+ ('tasks', OrderedDict())))
for task in os.listdir(recipe_dir):
recipe_bs['tasks'][task] = bs_to_json(os.path.join(recipe_dir,
task))