| 1 | # Trigger notification end-to-end latency analysis |
| 2 | |
| 3 | ## Description |
| 4 | This analysis is made-up of five executables. |
| 5 | |
| 6 | ### `producer` |
| 7 | |
| 8 | ``` |
| 9 | Usage: producer UNIQUE_ID NB_EVENT DELAY_MS |
| 10 | ``` |
| 11 | |
| 12 | An application that emits `NB_EVENT` times the `performance:hit` event every |
| 13 | `DELAY_MS` milliseconds. |
| 14 | |
| 15 | |
| 16 | ### `consumer` |
| 17 | ``` |
| 18 | Usage: consumer UNIQUE_ID NB_EVENT TRIGGER_NAME |
| 19 | ``` |
| 20 | |
| 21 | A simple notification client that subscribes to the notifications emitted by the |
| 22 | `TRIGGER_NAME` trigger. The consumer expects `NB_EVENT` notification and on each |
| 23 | valid reception emits a `performance:receive` event. |
| 24 | |
| 25 | |
| 26 | ### `perform-experience.sh` |
| 27 | |
| 28 | ``` |
| 29 | Usage: perform-experience.sh SOURCE_ID TRACE_DIRECTORY_NAME DELAY_MS NB_EVENT` |
| 30 | ``` |
| 31 | |
| 32 | This script performs a complete end-to-end trigger latency experience with |
| 33 | `DELAY_MS` between each trigger hit and `NB_EVENT` times. |
| 34 | |
| 35 | The resulting lttng-ust trace is stored inside `$(pwd)/trace/TRACE_DIRECTORY_NAME` |
| 36 | |
| 37 | ### `generate-data.sh` |
| 38 | |
| 39 | ``` |
| 40 | Usage: generate-data.sh |
| 41 | ``` |
| 42 | |
| 43 | This script performs all configured experiences and apply the customs workload |
| 44 | as necessary. |
| 45 | |
| 46 | The resulting traces are stored inside `$(pwd)/trace/` |
| 47 | |
| 48 | This script in its current form will run for about 25 hours. |
| 49 | |
| 50 | This script depends on `perform-experience.sh`. |
| 51 | |
| 52 | ### `generate-graph.sh` |
| 53 | |
| 54 | ``` |
| 55 | Usage: generate-graph.sh |
| 56 | ``` |
| 57 | |
| 58 | This script generate all histograms and saved them individually as pdf files. It |
| 59 | also generate a `summary.pdf` files that contains all pdfs in order of trigger frequency. |
| 60 | |
| 61 | This script does not have to run on the machine that produced the data. |
| 62 | |
| 63 | This script requires the presence of the "trace/" folder to work. |
| 64 | |
| 65 | This script depends on the `bt_plugin_plot.py` babeltrace 2 plugins. Hence this |
| 66 | script requires Babeltrace 2 with python bindings and python plugin support. |
| 67 | |
| 68 | The `bt_plugin_plot.py` requires `matplotlib`. |
| 69 | |
| 70 | |
| 71 | ## Building |
| 72 | |
| 73 | Simply run the included Makefile. |
| 74 | |
| 75 | ## Running the complete |
| 76 | |
| 77 | 1) Launch a session daemon using: |
| 78 | ``` |
| 79 | $ lttng-sessiond |
| 80 | ``` |
| 81 | 2) Launch `generate-data.sh` |
| 82 | 3) Wait ~25 hours |
| 83 | 3) Launch `generate-graph.sh` |