Git Product home page Git Product logo

buildbot_profiler's Introduction

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

https://raw.githubusercontent.com/tardyp/buildbot_profiler/master/screenshot.png

ChangeLog

  • 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

buildbot_profiler's People

Contributors

jonnyyu avatar tardyp avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.