RFR: JMC-5327: Using HdrHistograms to visualize latencies

Alex Macdonald almacdon at redhat.com
Thu May 2 16:55:28 UTC 2019

Hi Elliott,

Overall this patch looks good to me. I've had Travis give it a build and it
looks good [2].

A handful of minor formatting nits:

- Messages.properties (x3)
- - the DurationPercentileTable_PERCENTILE_COL_NAME should come after
DUMP_RECORDING_* for alphabetical order I believe

- There are some cases of extra whitespace, I went through hg diff and
counted the following number of occurrences:
- - DurationHdrHistogram (8)
- - DurationPercentileTable (38)
- - FileIOPage (5)
- - SocketIOPage (6)
- - IOPageTest (5)
- - IOPageTestBase (4)
- - SocketIOPageTest(5)

I noticed that when resizing the page, the durations table stays static
whereas the other tables seems to adjust (gif) [3]. This only seems to
cause an issue when my JMC window gets resized to just under 50% on my
monitor width, and the chart will get hidden. In the gif my JMC window is
around half my monitor width (of 1920), and with the JVM Browser/Outline
window open then I don't have much more room to shrink the application
before the chart disappears. I was just curious if the table could adjust
to resizing like the other tables.

Also not caused by this patch (but thought it'd be interesting to share),
I'm seeing a bug where my chart text gets really large [4] when I run JMC
locally and not as an RCP application (I recall seeing a JIRA bug for this
before, but cannot find it), and my durations tab will only show the table
(and not even the whole thing) [5].

On Wed, May 1, 2019 at 1:01 PM Elliott Baron <ebaron at redhat.com> wrote:

> Hi,
> 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
> Thanks,
> Elliott
> [1] http://hdrhistogram.org/



[2] https://travis-ci.org/aptmac/jmc-qa/builds/527337343
[3] https://imgur.com/XfkFqkI
[4] https://imgur.com/Zii9nzw
[5] https://imgur.com/Wyh6nbs

More information about the jmc-dev mailing list