summaryrefslogtreecommitdiffstats
path: root/scripts/pybootchartgui
Commit message (Collapse)AuthorAgeFilesLines
* pybootchart: Avoid divide by zeroRichard Purdie2021-09-211-1/+4
| | | | | | | | | | Avoid a rare divide by zero error if there isn't data point spread. [YOCTO #14547] (From OE-Core rev: d7e36d01e87ddf89f76f164a0b7d98f597a53fa5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchart/draw: Avoid divide by zero errorRichard Purdie2021-05-021-1/+1
| | | | | | | | | | | | When disk stats don't run frequenctly enough, we see divide by zero errors. The code already has a fallback path so ensure we use it for this case too. [YOCTO #14360] (From OE-Core rev: b71d30aef5dc2c360432c0dd4147859dd303ea48) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchartgui: Fix to work with python 3.8Richard Purdie2020-03-151-3/+3
| | | | | | | | | time.clock() was removed in python 3.8, use one of its recommended replacements to fix failures on python 3.8 systems. (From OE-Core rev: f1d4ecce7d3968c5e08c268e3329041d4b647cf6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fix various, innocuous typosRobert P. J. Day2020-02-181-1/+1
| | | | | | | | | | | | | | Corrections: - environment - accommodate - conversion - compatible (From OE-Core rev: 9797d3b45b4e1b9d77f0f2ee299c17b48d8d3cf6) Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart/draw: Fix some bounding problemsRichard Purdie2019-05-081-1/+5
| | | | | | | | | | | The chart size extents were being incorrectly reported, not accounting for the width of the legend. Set a minimum width to account for that (its fixed size). Also stop printing the chart background off the bottom of the chart extents. (From OE-Core rev: ef257afb772daf721f12cb3ff9708d39da06f2c9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart/draw: Clarify some variable namesRichard Purdie2019-05-081-9/+10
| | | | | | | | | This tweaks some intermediate variable names to make it clearer what is being done. (From OE-Core rev: 50d9af7bcb05823db36e86170ef9ba3a1d6cfeca) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart: Port to python3Richard Purdie2019-05-084-118/+118
| | | | | | | | | | | | | | This updates the pybootchart code (used for viewing build timing profiles) to use python3. The bulk of the changes are to use gi instead of pygtk, i.e. port from gtk+2 to gtk+3. The main change is to make the bootchart widget inherit gtk.Scrollable and change the way the scrollbars are implemented to match the new method upstream. The drawing code used cairo already so can remain unchanged, (From OE-Core rev: 949144681ad7f536732169351cab6d0612e9c566) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart: Fix mixed indentationRichard Purdie2019-05-081-689/+689
| | | | | | | | The script had a toxic mix of tabs and spaces, fix this. (From OE-Core rev: 5eebe246e9444a5a7dbf4d8683ae08c468cfc401) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: support reading reduced /proc logsPatrick Ohly2016-12-071-0/+31
| | | | | | | | | | | | | | | Pre-processing /proc data during the build considerably reduces the amount of data written to disk: 176KB instead of 4.7MB for a 20 minuted build. Parsing also becomes faster. buildstats.bbclass only writes the reduced logs now, but support for the full /proc files is kept around as reference. (From OE-Core rev: b5e47df9af1ebbb477074587fdeae17eb2f55582) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: simplify drawing of memory usagePatrick Ohly2016-12-073-7/+23
| | | | | | | | | | | | | The internal representation after parsing now matches exactly what the drawing code needs, thus speeding up drawing a bit. However, the main motivation is to store exactly that required information in a more compact file. (From OE-Core rev: ca06e67a0bb5820b38fda4c8dfee20764c1e59ae) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: render disk space usagePatrick Ohly2016-12-073-0/+99
| | | | | | | | | | | | | | | | | | | | | | | This adds a new, separate chart showing the amount of disk space used over time for each volume monitored during the build. The hight of the graph entries represents the delta between current usage and minimal usage during the build. That's more useful than showing just the current usage, because then a graph showing changes in the order of MBs in a volume that is several GB large would be just flat. The legend shows the maximum of those deltas, i.e. maximum amount of space needed for the build. Minor caveat: sampling of disk space usage starts a bit later than the initial task, so the displayed value may be slightly lower than the actual amount of space needed because sampling does not record the actual initial state. (From OE-Core rev: 263d189d066b578debf08b2bd07494a69b70f70d) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui/parsing.py: fix error handling in meminfo parserPatrick Ohly2016-12-071-1/+1
| | | | | | | | | | | When matching fails, m.group(0) is invalid and can't be used in the error message. (From OE-Core rev: ddfea21e06a2e6b1a1e766969f8c134a6de7388a) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui/draw.py: skip empty CPU and disk usage chartsPatrick Ohly2016-12-071-48/+50
| | | | | | | | | | | The only real change is the addition of two if checks that skips the corresponding drawing code when there is no data. (From OE-Core rev: 1658fd5e9ca1ba793cae604c2a395d54e3ec9056) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: show system utilizationPatrick Ohly2016-12-072-20/+57
| | | | | | | | | | | | | | | This enables rendering of the original bootchart charts for CPU, disk and memory usage. It depends on the /proc samples recorded by the updated buildstats.bbclass. Currently, empty charts CPU and disk usage charts are drawn if that data is not present; the memory chart already gets skipped when there's no data, which will also have to be added for the other two. (From OE-Core rev: 233d3e50b361feea07803a9c0f2a691e687c6cd5) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui/draw.py: fix drawing of samples not starting at zeroPatrick Ohly2016-12-071-1/+1
| | | | | | | | | | | | The code did not handle x scaling correctly when drawing starts at some time larger than zero, i.e. it worked for normal bootchart data, but not for the system statistics recorded by buildstats.bbclass. (From OE-Core rev: 166f8f9aaa1f01fc6d6a5451f8f06b815c51ffae) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui/draw.py: allow moving process chart up and downPatrick Ohly2016-12-071-1/+1
| | | | | | | | | | | | | | | | | | | | Substracting curr_y when determining the hight of the process chart is wrong because the height is independent of the position where the chart is about to be drawn. It happens to work at the moment because curr_y is always 10 when render_processes_chart() gets called. But it leads to a negative height when other charts are drawn above it, and then the grid gets drawn on top of those other charts. Substracting some constant is relevant because otherwise the box is slightly larger than the process bars. Not sure exactly where that comes from (text height?); leg_s seems a suitable constant and happens to be 10, so everything still gets rendered exactly as before. (From OE-Core rev: b6bb690728c329ae448f89a1b68298c6dd8a573a) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart: Fix print statementRichard Purdie2016-06-031-3/+1
| | | | | | | | This was broken with the python3 fixes. (From OE-Core rev: 0eadd008d08f9a6bb17a1f641b4735d0d2012580) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts: python3: get rid of __future__ importsEd Bartosh2016-06-032-5/+0
| | | | | | | | | | Removed print_function and with_statement imports from __future__ as they're supported by python 3 by default. (From OE-Core rev: 77ae2daad5d775d710b953cf0c623ce74cb2c274) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts: use '/usr/bin/env' in shebangs with pythonMartin Hundebøll2014-11-121-1/+1
| | | | | | | | | | | | | | | | | | To support yocto on systems with python3 as default version, scripts should use /usr/bin/env python in the shebang, as this allows the use of a fake env to mimic python2 as default version. This patch simply replaces occurrences of #!/usr/bin/python with #!/usr/bin/env python and was done with this oneliner: git grep -lE '^#!/usr/bin/python' | xargs \ sed -i 's|/usr/bin/python|/usr/bin/env python|' (From OE-Core rev: 6d3de22a19657a413e01d7bb5fd74d16c00dc696) Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Add option -T to allways use the full timePeter Kjellerstedt2014-01-233-5/+20
| | | | | | | | | | | | When --full-time (or -T) is used, the graph allways shows the full time regardless of which processes are currently shown. This is especially useful in combinationm with the -s flag when outputting to multiple files. (From OE-Core rev: c6e88199ddf2c4ae243d42afc403d28ab56f00f0) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Adopt the width of the index in split output filesPeter Kjellerstedt2014-01-231-1/+3
| | | | | | | | | | | Add minimum width zero-padding to the index used in split output files with -s and -o. I.e., if -s 200 is used, then the index will be zero-padded to three digits width. (From OE-Core rev: 45565b24651ab502ae49dc49261dc3ad5634191f) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Simplify adding processes to the tracePeter Kjellerstedt2014-01-231-25/+14
| | | | | | | (From OE-Core rev: 5fa869007b5ba762bf5679197cf98b1d14a34a22) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Correct the legendPeter Kjellerstedt2014-01-231-1/+1
| | | | | | | (From OE-Core rev: 1ca2e1a2ae3dc4d1e62a9daf25df588ec27a195a) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Make the -s option work againPeter Kjellerstedt2014-01-231-4/+5
| | | | | | | | | [YOCTO #5588] (From OE-Core rev: 8245ceab3acd02618f24665ff5dc203c1e5cce1d) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Add option --minutes to show time in minutesPeter Kjellerstedt2013-11-182-4/+9
| | | | | | | (From OE-Core rev: b93eefd039a956b7d1d184592dd4342eb43f9341) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Add a color for the package_write_* tasksPeter Kjellerstedt2013-11-181-0/+8
| | | | | | | (From OE-Core rev: 2cec29b47a1de5da712cf4e2c6e25daf45d9f265) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Reorder the legend to match the task execution orderPeter Kjellerstedt2013-11-181-6/+6
| | | | | | | (From OE-Core rev: a12cf87471de40ce432d0176eabfb111de5310c6) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Make bars without a specified color whitePeter Kjellerstedt2013-11-181-0/+2
| | | | | | | | | Previously they were transparent. (From OE-Core rev: 4ebdd8672cc5589a3e2f8d1b75cde7fae9fd6c99) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Make "Show more" show all processesPeter Kjellerstedt2013-11-184-12/+27
| | | | | | | | | | | | | | While "Show more" is enabled, all processes are shown, regardless of --mintime. This also has the added benefit of making the first shown bar start at its correct offset from the start time, rather than always starting at 0. (From OE-Core rev: 5f1b8730f90099c0f73a6b08599990ee71e831b5) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Draw a lot less ticksPeter Kjellerstedt2013-11-181-0/+7
| | | | | | | | | | | With this, one second ticks are only enabled if the width of a second is five pixels or more. It is also possible to distinguish 1, 5 and 30 second ticks. (From OE-Core rev: bd0bde6d04fd6cd9f8e7773d68da127144afa7de) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Disable options that do not make sensePeter Kjellerstedt2013-11-181-15/+25
| | | | | | | (From OE-Core rev: e1cde0c8b65a56657a5a5669890dad442223fef4) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: No need to do a double list comprehension over filesPeter Kjellerstedt2013-11-181-2/+1
| | | | | | | (From OE-Core rev: bd00a768d88c22eabee90407684f1fb84139acfb) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Avoid having overlapping process barsPeter Kjellerstedt2013-11-181-1/+1
| | | | | | | (From OE-Core rev: 901afb35da814661ed20b2895f1d4055bf73fae2) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Use correct header heightPeter Kjellerstedt2013-11-181-3/+3
| | | | | | | (From OE-Core rev: f7d1f49aa46a46ecb881386f0399aa7da288d805) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Correct the X offset for the chartPeter Kjellerstedt2013-11-181-2/+2
| | | | | | | | | | | This will make the first bar actually start within the graph. It will also move the graph to the right so the names of the first tasks are more likely to be visible. (From OE-Core rev: 388daa9a8ce7f2216fb55ce65cab1d4060f6c41d) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Set the initial state of "Show more" correctlyPeter Kjellerstedt2013-11-181-0/+1
| | | | | | | (From OE-Core rev: 55fa7f768bb7618f2daaf43f147609c76e077b8b) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Make the horizontal scaling stay within boundsPeter Kjellerstedt2013-11-181-2/+2
| | | | | | | (From OE-Core rev: 50c2c3435915ef1ecbde395c71c5c9581c83fb2e) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Import pybootchartgui 0.14.5Peter Kjellerstedt2013-11-1816-1463/+2563
| | | | | | | | | | | This update the pybootchartgui code to the latest release from its new location at "https://github.com/mmeeks/bootchart". This only imports the relevant parts, and not all of bootchart2. (From OE-Core rev: 6f1568e54a7808b2ab568618fc5bb244249579f1) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart: Allow minimum task length to be configured from the ↵Richard Purdie2012-11-202-10/+12
| | | | | | | | | | | | commandline Rather than hardcode the value of "8", allow the minimum task length to be configured from the commandline using the -m option. "-m 0" means all tasks will be graphed. (From OE-Core rev: 30001153d3ce7dadf8f1ec79e634a638a9994518) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/pybootchart: Fix missing entries bugRichard Purdie2012-11-202-34/+48
| | | | | | | | | | | If two entries have the same start time, the data store used will cause all but one of the entries to be lost. This patch enhances the data storage structure to avoid this problem and allow more than one event to start at the same time. (From OE-Core rev: 220b071fd8d1cc6bdbca58f75489e3c9b34921ca) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: Fix the filename and add a default formatRobert Yang2012-06-151-19/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix teh output filename to make it easy to use * Add a default output format (svg) * Fix the usage message * Fix the version to v1.0.0 Currently, the help messages are: $ ./pybootchartgui.py --help Usage: pybootchartgui.py [options] /path/to/tmp/buildstats/<recipe-machine>/<BUILDNAME>/ Options: --version show program's version number and exit -h, --help show this help message and exit -i, --interactive start in active mode -f FORMAT, --format=FORMAT image format: svg, pdf, png, [default: svg] -o PATH, --output=PATH output path (file or directory) where charts are stored -s NUM, --split=NUM split the output chart into <NUM> charts, only works with "-o PATH" -n, --no-prune do not prune the process tree -q, --quiet suppress informational messages --very-quiet suppress all messages except errors --verbose print all messages [YOCTO #2403] (From OE-Core rev: 138c2c31e41e3f1803b7efbedf78326d71821468) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: split the output chart into multiple onesRobert Yang2012-06-152-2/+48
| | | | | | | | | | | | | | | | | | | | Split the output chart into multiple ones to make it more readable, it only works with "-o path", which means that it doesn't work if the user doesn't want to save the chart to the disk. For example: $ ./pybootchartgui.py /path/to/tmp/buildstats/core-image-sato-qemux86/201205301810/ -f svg -s 5 -o /tmp/ bootchart written to /tmp/bootchart_1.svg bootchart written to /tmp/bootchart_2.svg bootchart written to /tmp/bootchart_3.svg bootchart written to /tmp/bootchart_4.svg bootchart written to /tmp/bootchart_5.svg [YOCTO #2403] (From OE-Core rev: 04a34899e1c15a70babd97a3a59ccb9f8af05bad) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: make the build profiling in picturesRobert Yang2012-06-154-64/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original patch is from Richard, I rebased it to the up-to-date upstream code, here are the original messages from him: We have just merged Beth's initial buildstats logging work. I was sitting wondering how to actually evaluate the numbers as I wanted to know "where are we spending the time?". It occurred to me that I wanted a graph very similar to that generated by bootchart. I looked around and found pyboootchartgui and then hacked it around a bit and coerced it to start producing charts like: http://tim.rpsys.net/bootchart.png which is the initial "pseudo-native" part of the build. This was simple enough to test with. I then tried graphing a poky-image-sato. To get a graph I could actually read, I stripped out any task taking less than 8 seconds and scaled the x axis from 25 units per second to one unit per second. The result was: http://tim.rpsys.net/bootchart2.png (warning this is a 2.7MB png) I also added in a little bit of colour coding for the second chart. Interestingly it looks like there is more yellow than green meaning configure is a bigger drain on the build time not that its unexpected :/. I quite enjoyed playing with this and on a serious note, the gradient of the task graph makes me a little suspicious of whether the overhead of launching tasks in bitbake itself is having some effect on build time. Certainly on the first graph there are some interesting latencies showing up. Anyhow, I think this is the first time bitbake's task execution has been visualised and there are some interesting things we can learn from it. I'm hoping this is a start of a much more detailed understanding of the build process with respect to performance. [YOCTO #2403] (From OE-Core rev: 6ea0c02d0db08f6b4570769c6811ecdb051646ad) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* pybootchartgui: add the original codeRobert Yang2012-06-1514-0/+2207
This is from: http://pybootchartgui.googlecode.com/files/pybootchartgui-r124.tar.gz Will modify it to make the build profiling in pictures. Remove the examples since they would not work any more, and they cost much disk space. [YOCTO #2403] (From OE-Core rev: 1f0791109e1aed715f02945834d6d7fdb9a411b4) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>