Latency CDF and CCDF graphs

Introduction

In this article, we explain why this graph was introduced and how to interpret it! We end with some warnings and some FAQs. 

Let's start with an example graph:


Why?

One of the things you can do with ByteBlower is measure network latency.
For each flow in your test, you get two separate graphs:

  • Latency Results-over-Time
  • Latency Distribution

Below are examples of such graphs:

The graph above shows how the latency evolved over time.
The graph below shows a histogram of how many packets were received at a certain latency.


Both graphs allow you to analyze each flow in detail.
However, they fall short when you want to compare all flows.
That's why we're introducing the Latency CCDF and CDF graph:
At one glance it becomes clear how all flows relate to each other.

How to interpret it

Quick tip: flows at the left have a lower latency.
Here's the graph again:

 

For each flow, a line is plotted. When a plot crosses the P99 line, 99% of the packets of that flow have been received successfully.
In the example above, you can see that:

  • 99% of the packets of flow DEVICE_2_US_DSCP to the NET port were received within 3 ms.
  • 99% of the packets of flow DEVICE_3_US_DSCP to the NET port were received within 4 ms.
  • 99% of the packets of flow DEVICE_2_US to the NET port were received within 8.9 ms

At the top of the graph, you can see for each flow when the first packets were received.
At the bottom of the graph, you can see for each flow when 99.99% of all packets were received.

All axes have a logarithmic scale:


On the left side, you can see the fraction of packets that were received above a certain latency.
This is the CCDF, which stands for "Complementary Cumulative Distribution Function".
This value goes from one to zero downwards.  Because of the logarithmic scale, the lowest visible value is 0.0001.



On the right side, you can read the percentage of packets received below a certain latency.
This is the CDF, which stands for "Cumulative Distribution Function".
It starts at P0 and the lowest visible value at the bottom is P99.99, because of the logarithmic scale.



On the X-axis, the latency is displayed.
The time unit can be set in the Preferences of the ByteBlower GUI.




Possible warnings and how to avoid them.

The graph may contain warnings.
Clicking on a warning in the graph will open the corresponding explanation below.
When hovering over a plot, a tooltip will appear showing only the warnings for that flow.


Here is an overview of all possible warnings:

Warning

Explanation and solution

Flow detected with less than 50 data points

This warning appears when the packets of this flow are all received within a small range.
The Distribution Histogram of such flows will appear as a narrow spike:

Suggested solution: make the range narrower.  In the picture above, the range starts at 0ms and ends at 50ms.
In this case, a better range end would be 1ms.

In the preferences of the ByteBlower GUI, you can specify the range:

Have a look at the Latency table to get good initial values for your range:

Flow detected with packets below range

When packets are received below the specified range in the GUI preferences, this warning will appear.
Choose a lower range start value for the Latency Histogram range in the GUI preferences to make this warning disappear.

Flow detected with packets above range

When packets are received above the specified range in the GUI preferences, this warning will appear.
Choose a higher range end value for the Latency Histogram range in the GUI preferences to make this warning disappear.

Flow detected with less than 10.000 received packets

This warning will be displayed when too few packets are received to render a smooth graph.
We chose this value because then we can plot a precise P99.99 value.
In the Scenario View, you can increase the number of packets or the duration of the flow.

Flow detected with sampled packets

 When sending traffic at very high rates, it typically is not necessary to measure the latency of each and every packet.
The ByteBlower 5100 server model is capable of transmitting at 100Gbps. It may sample received packets to measure their latency.
This means that only a fraction of the received packets is used in the Latency Histogram and corresponding CCDF plot of such a flow.
As a consequence, if the packets that were not sampled had a latency that deviates significantly from the sampled packets, this will not be noticeable in the graph.
If you get this warning when using other server models, we advise you to update to the latest version.


Frequently asked questions

Why does the plot stop before reaching 100%?
The CDF and CCDF graphs have logarithmic axes. The bottom of the graph corresponds with 99.99% of all received packets. This is typically more than enough to represent the most important characteristics of a flow.

Why do some plots have rugged ends? 
Example

Only a few packets were received with such a high latency. You can see this clearly in the corresponding Latency Histogram:

When displayed on a logarithmic scale, you get rugged ends on some flows.

Do you have any questions?
Write a comment below or contact us at support.byteblower@excentis.com