Processing the file
The central_service.log file may be processed with the help of the delay_meas module.
import rs_mrt_dau_utilities.delay_meas as delay
measurements = delay.extract_delay_from_log(
"central_service.log"
)
The measurement variable contains a dictionary of Polars dataframes. Each key of the dictionaries is a combination of two numbers: X_Y
X: a start/stop session (main switch of the Delay measurement application)
Y: a measurement who was activated during this session (enable/disable switch)
For example, 1_1 means first measurement of the first session.
# get the first measurement dataframe of the first measurement cycle
first_meas = measurements["1_1"]
first_meas
hash |
delay_global_us |
|---|---|
1250852322484709 |
53 |
1251539517252070 |
49 |
1252226712019431 |
51 |
1252913906786792 |
48 |
1253601101554153 |
55 |
… |
… |
3311062235032987 |
43 |
3311749429800348 |
39 |
3312436624567709 |
41 |
3313123819335070 |
39 |
3313811014102431 |
41 |
Every packet is represented by its hash value and the delay in microseconds. The measurement mode defines the meaning of the delay:
LOOPBACK: Measures the CMX500 internal delay in IMS loopback mode
DL: Measures the CMX500-internal delay in DL direction
UL: Measures the CMX500-internal delay in UL direction
E2E Audio delay: Measures the audio delay between the XLR analog output and XLR analog input connectors of the R&S CMX-ZG180A external sound card
E2E Audio delay DL: End-to-end DL delay of the speech decoder inside the DUT
E2E Audio delay UL: End-to-end UL delay of the speech encoder inside the DUT
This is possible to perform further analysis on these dataframes using Polars functionalities. A plot of the delay distribution can be created as shown below (Altair library is used for plotting):
import rs_mrt_dau_utilities.delay_meas as delay
delay.plot_all(first_meas)