[ https://issues.apache.org/jira/browse/KAFKA-5203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16002583#comment-16002583 ]
Ivan A. Melnikov commented on KAFKA-5203: ----------------------------------------- I actually have a fix for this issue. I'll create a pull request shortly. > Percentilles are calculated incorrectly > --------------------------------------- > > Key: KAFKA-5203 > URL: https://issues.apache.org/jira/browse/KAFKA-5203 > Project: Kafka > Issue Type: Bug > Components: metrics > Reporter: Ivan A. Melnikov > Priority: Minor > > After the samples are purged couple of times, the calculated percentile > values tend to decrease comparing to the expected values. > Consider the following simple example (sorry, idk if I can make it shorter): > {code} > int buckets = 100; > Metrics metrics = new Metrics(new > MetricConfig().eventWindow(buckets/2).samples(2)); > Sensor sensor = metrics.sensor("test"); > sensor.add(new Percentiles(4 * buckets, 100.0, > Percentiles.BucketSizing.CONSTANT, > new Percentile(metrics.metricName("test.p50", "grp1"), 50), > new Percentile(metrics.metricName("test.p75", "grp1"), 75))); > Metric p50 = metrics.metrics().get(metrics.metricName("test.p50", > "grp1")); > Metric p75 = metrics.metrics().get(metrics.metricName("test.p75", > "grp1")); > for (int i = 0; i < buckets; i++) sensor.record(i); > System.out.printf("p50=%.3f p75=%.3f\n", p50.value(), p75.value()); > for (int i = 0; i < buckets; i++) sensor.record(i); > System.out.printf("p50=%.3f p75=%.3f\n", p50.value(), p75.value()); > for (int i = 0; i < buckets; i++) sensor.record(i); > System.out.printf("p50=%.3f p75=%.3f\n", p50.value(), p75.value()); > {code} > The output from this is: > {noformat} > p50=50.000 p75=74.490 > p50=24.490 p75=36.735 > p50=15.306 p75=24.490 > {noformat} > The expected output is, of course, with all three lines similar to the first > one. -- This message was sent by Atlassian JIRA (v6.3.15#6346)