147effea78e92ae341fd048b1c9c1ff54c0ced0f

The original Redis driver stored each tracing event under its own key, as result both list and get operations required a full scan of the database. With this patch traces are stored as Redis lists under a key equal to trace id. So list operation iterates only over unique trace ids and get operation retrieves the content of a specified list. Note that list operation still needs to retrieve at least 1 event from the trace in order to get a timestamp. Performance test is executed with 1000 traces each consisting 1000 events: * existing driver: * write: 48 sec * list: 41 sec * get: 3.6 sec * optimized driver: * write: 44 sec * list: 4.1 sec * get: 0.01 sec Change-Id: I09a122f91e3d26531965fe53d6df7c66f502de4c
Team and repository tags
OSProfiler -- Library for cross-project profiling library
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
Description
Languages
Python
93.2%
HTML
4.9%
Shell
1.9%