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
--since
toosprofiler list
- Added
tracepoint_id
to 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
loginsight
backend - Added sampling rate
- Global variables at
osprofiler/profiler.py
CREATE_MANIFEST
: create a file for each tracepoint encounteredTRACE_NEWTHREAD
: trace thread creation eventsSKELETON_ONLY
: only collect thread creation events
- Added
profiler.annotate
to 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 -U
sudo pip install --no-deps --force-reinstall -U .
sudo systemctl restart devstack@*