OSProfiler provides a tiny but powerful library that is used by most (soon to be all) OpenStack projects and their python clients. It provides functionality to be able to generate 1 trace per request, that goes through all involved services. This trace can then be extracted and used to build a tree of calls which can be quite handy for a variety of reasons (for example in isolating cross-project performance issues).
- Free software: Apache license
- Documentation: https://docs.openstack.org/osprofiler/latest/
- Source: https://git.openstack.org/cgit/openstack/osprofiler
- Bugs: https://bugs.launchpad.net/osprofiler
- Release notes: https://docs.openstack.org/releasenotes/osprofiler
- Disable sqlalchemy tracing
- Added
--sincetoosprofiler list - Added
tracepoint_idto spans. Only works fully for redis backend.- For normal traces, location of function and full function name with class etc.
- For web calls, path that is called and request type
- Disabled
loginsightbackend - Added sampling rate
- Global variables at
osprofiler/profiler.pyCREATE_MANIFEST: create a file for each tracepoint encounteredTRACE_NEWTHREAD: trace thread creation eventsSKELETON_ONLY: only collect thread creation events
- Added
profiler.annotateto add annotations to traces - Added ability to enable/disable tracepoints. Works by reading manifest files at each tracepoint
- Fixed metaclass/builtin method tracing. These traces work correctly now. Can turn into a pull request to upstream.
- Clone the repo
sudo pip install -r requirements.txt --no-deps --force-reinstall -Usudo pip install --no-deps --force-reinstall -U .sudo systemctl restart devstack@*