From 81aef784fdbd2e8a543475b1892c3d6a1fe97872 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 15 Sep 2017 16:04:38 +0300 Subject: scripts/oe-build-perf-report: summary of task resource usage Utilize buildstats, if available, and show a summary of the resource usage of bitbake tasks in the html report. The details provided are: - total number of tasks - top 5 resource-hungry tasks (cputime) - top 5 increase in resource usage (cputime) - top 5 decrease in resource usage (cputime) [YOCTO #11381] (From OE-Core rev: ddd9443cb2432af2c15b358bfda708393fa3c417) Signed-off-by: Markus Lehtonen Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- scripts/lib/build_perf/html/report.html | 60 +++++++++++++++++++++++++++++++-- scripts/lib/buildstats.py | 8 +++++ 2 files changed, 66 insertions(+), 2 deletions(-) (limited to 'scripts/lib') diff --git a/scripts/lib/build_perf/html/report.html b/scripts/lib/build_perf/html/report.html index f983a4a09c..e56186c958 100644 --- a/scripts/lib/build_perf/html/report.html +++ b/scripts/lib/build_perf/html/report.html @@ -53,9 +53,11 @@ summary th, .meta-table td { border-collapse: collapse; } .details th { - font-weight: normal; padding-right: 8px; } +.details.plain th { + font-weight: normal; +} .preformatted { font-family: monospace; white-space: pre-wrap; @@ -168,6 +170,7 @@ h3 { {{ measurement.absdiff_str }} ({{measurement.reldiff}}) + {# Table for trendchart and the statistics #}
@@ -176,7 +179,7 @@ h3 { {# Measurement statistics #} - +
@@ -195,6 +198,59 @@ h3 {
Test runs{{ measurement.value.sample_cnt }}
+ + {# Task and recipe summary from buildstats #} + {% if 'buildstats' in measurement %} + Task resource usage + + + + + + + + {# Table of most resource-hungry tasks #} + + + + + + + + {# Table biggest increase in resource usage #} + + {# Table biggest decrease in resource usage #} + + +
Number of tasksTop consumers of cputime
{{ measurement.buildstats.tasks.count }} ({{ measurement.buildstats.tasks.change }}) + + {% for diff in measurement.buildstats.top_consumer|reverse %} + + + + + {% endfor %} +
{{ diff.pkg }}.{{ diff.task }}{{ '%0.0f' % diff.value2 }} s
+
Biggest increase in cputimeBiggest decrease in cputime
+ + {% for diff in measurement.buildstats.top_increase|reverse %} + + + + + {% endfor %} +
{{ diff.pkg }}.{{ diff.task }}{{ '%+0.0f' % diff.absdiff }} s
+
+ + {% for diff in measurement.buildstats.top_decrease %} + + + + + {% endfor %} +
{{ diff.pkg }}.{{ diff.task }}{{ '%+0.0f' % diff.absdiff }} s
+
+ {% endif %} {% endfor %} {# Unsuccessful test #} diff --git a/scripts/lib/buildstats.py b/scripts/lib/buildstats.py index 9eb60b1c69..bd6332176a 100644 --- a/scripts/lib/buildstats.py +++ b/scripts/lib/buildstats.py @@ -180,6 +180,14 @@ class BSRecipe(object): class BuildStats(dict): """Class representing buildstats of one build""" + @property + def num_tasks(self): + """Get number of tasks""" + num = 0 + for recipe in self.values(): + num += len(recipe.tasks) + return num + @classmethod def from_json(cls, bs_json): """Create new BuildStats object from JSON object""" -- cgit v1.2.3-54-g00ecf