"Profiler for buildbot master and its UI"
Project description
This plugin implements a profiler for buildbot master.
- It uses statistical profiling loosely based on plop https://github.com/bdarnell/plop
- Suitable for prod as statistical profiling is very low overhead
- Profiles all threads including main thread and db threads
- Removes noise samples when the threads are actually in the main loop
- In-browser UI based on nvd3 and d3-flame-graph
- Show cpu and memory percent over time
- flame graph can be restricted to a subset of the trace
- Detailed caller/callee are displayed when clicking on a function
Usage
installation:
pip install buildbot_profiler
then in master.cfg:
c['www']['plugins']['profiler'] = True
Alternatively, you can install it in service mode, without the UI
c['services'] = [util.ProfilerService()]
ProfilerService takes following arguments:
ProfilerService(frequency=100, gatherperiod=30 * 60, mode='virtual', basepath=None, wantBuilds=100)
frequency: the profiling frequency in HZ. Not that if there is no activity during a profiling timer, no data will be recorded.
gatherperiod: the period during which the profiler works on one file. By default a new json file is created every 30min with the profile of the last 30min. Note that if there is no activity the gather period might be longer.
mode: profiling timer to use. Can be:
- prof: use SIG_PROF timer,
- virtual: use SIGVTALRM timer,
- real: use SIGALRM timer,
basepath: the base path where to store the json files. (defaults to (master's basedir)/prof_)
wantBuilds: if this is > 0 then the last N builds are stored along side the profile data, for debug purpose.
Standalone Viewer
A standalone viewer is provided for offline browse of user submitted profiles.
bbprofiler
Then you can open your browser on http://localhost:8080
Screenshot
ChangeLog
- 1.3.1 Upgrade build to webpack, Fix argument parsing for record duration and sample rate
- 1.2.3 Fixes for python2
- 1.2.2 Fixes for python3
- 1.2.1 Fix issues with load calculation
- 1.2.0 Fold the flames so that you can explore larger traces.
- Fix the service so that the trace is reset between run.
- 1.1.0 add a service to use the profiler without bother the users with a profiler UI.
- 1.0.0 initial version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Built Distribution
Hashes for buildbot_profiler-1.3.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eb819dd54b76323e2c3e21b3b0fc9d2292174630dd3d73d14c500a634748548 |
|
MD5 | c58f26fa11971b6c5310d54b5b0e4bfe |
|
BLAKE2-256 | 2dad309945597fc0cd4d2aec34c240d0f9fb0f05653940978d0d1f0e78a05275 |