RFR: JMC-5327: Using HdrHistograms to visualize latencies

Elliott Baron ebaron at redhat.com
Wed May 1 17:00:27 UTC 2019


Please review this patch which adds additional IO duration statistics 
using HdrHistogram [1]. One of the nice features of HdrHistogram is its 
ability to generate percentile distributions of data, while using 
limited space. For latency measurements, this can be a useful tool to 
draw attention to outliers where latency is particularly bad.

These statistics are displayed in a new table within the File and Socket 
IO pages. This table shows the read/write duration at predetermined 
percentiles (0, 90, 99, 99.9, 99.99, 99.999, and 100), and the total 
number of items <= that duration. I originally planned to show this 
information in a chart, but ran into difficulties expressing a 
non-linear percentile axis with JMC's charting API. After discussions 
with Marcus, I opted to display this information using a table alongside 
the existing chart.

I included some UI tests that verify the values in each of these 
HdrHistogram tables using a new (gzipped) JFR recording. I tried to keep 
this recording as small as possible, while still getting somewhat 
interesting results in the tables.

HdrHistogram itself is already bundled on Maven Central, I simply added 
it to our third-party p2 repository and target platforms. The included 
translations for the word "percentile" are the result of consulting 
online dictionaries, there may be better terms.

Bug: https://bugs.openjdk.java.net/browse/JMC-5327
Webrev: http://cr.openjdk.java.net/~aptmac/JMC-5327/webrev.00/
Preview: https://imgur.com/a/MlA2C7y


[1] http://hdrhistogram.org/

More information about the jmc-dev mailing list