Skip to content

Commit 85aa9e6

Browse files
committed
[99PCT] Added percentile 99 to upper metric
1 parent 993d2d4 commit 85aa9e6

File tree

5 files changed

+30
-22
lines changed

5 files changed

+30
-22
lines changed

debian/control

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: brubeck-fiverr
2-
Version: 1.0.11
2+
Version: 1.0.12
33
Maintainer: Fiverr.com
44
Architecture: amd64
55
Description: A Statsd-compatible metrics aggregator (https://github.com/fiverr/brubeck)

src/histogram.c

+2
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ void brubeck_histo_sample(
9191
histo_sort(histo);
9292

9393
value_t pct_rank = histo_percentile_rank(histo, 0.9f);
94+
value_t pct_rank_99 = histo_percentile_rank(histo, 0.99f);
9495

9596
sample->count = histo->count;
9697
sample->count_90 = floor((histo->count * 0.9) + 0.5f);
@@ -99,6 +100,7 @@ void brubeck_histo_sample(
99100
sample->lower = histo->values[0];
100101
sample->upper = histo->values[histo->size - 1];
101102
sample->upper_90 = histo->values[(size_t)pct_rank - 1];
103+
sample->upper_99 = histo->values[(size_t)pct_rank_99 - 1];
102104
sample->mean = sample->sum / histo->count;
103105
sample->mean_90 = sample->sum_90 / sample->count_90;
104106
sample->median = histo_percentile(histo, 0.5f);

src/histogram.h

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ struct brubeck_histo_sample {
1919
value_t sum_90;
2020
value_t upper;
2121
value_t upper_90;
22+
value_t upper_99;
2223
};
2324

2425
void brubeck_histo_push(struct brubeck_histo *histo, value_t value, value_t sample_rate);

src/metric.c

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ histogram__sample(struct brubeck_metric *metric, brubeck_sample_cb sample, void
223223
sample(key, hsample.upper_90, opaque);
224224
}
225225

226+
WITH_SUFFIX(".upper_99") {
227+
sample(key, hsample.upper_99, opaque);
228+
}
229+
226230
WITH_SUFFIX(".sum") {
227231
sample(key, hsample.sum, opaque);
228232
}

tests/histogram.c

+22-21
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ void test_histogram__single_element(void)
6060
sput_fail_unless(sample.lower == 42.0, "sample.lower");
6161
sput_fail_unless(sample.upper == 42.0, "sample.upper");
6262
sput_fail_unless(sample.upper_90 == 42.0, "sample.upper_90");
63+
sput_fail_unless(sample.upper_99 == 42.0, "sample.upper_99");
6364
sput_fail_unless(sample.mean == 42.0, "sample.mean");
6465
sput_fail_unless(sample.mean_90 == 42.0, "sample.mean_90");
6566
sput_fail_unless(sample.count == 1, "sample.count");
@@ -96,27 +97,26 @@ void test_histogram__multisamples(void)
9697

9798
memset(&h, 0x0, sizeof(h));
9899

99-
for (i = 0; i < 8; ++i) {
100-
for (j = 0; j < 128; ++j)
101-
brubeck_histo_push(&h, (double)(j + 1), 1.0);
102-
103-
sput_fail_unless(h.size == 128, "histogram size");
104-
sput_fail_unless(h.count == 128, "histogram value count");
105-
106-
brubeck_histo_sample(&sample, &h);
107-
108-
sput_fail_unless(sample.lower == 1.0, "sample.lower");
109-
sput_fail_unless(sample.upper == 128.0, "sample.upper");
110-
sput_fail_unless(sample.upper_90 == 115.0, "sample.upper_90");
111-
sput_fail_unless(sample.mean == 64.5, "sample.mean");
112-
sput_fail_unless(sample.mean_90 == 58.0, "sample.mean_90");
113-
sput_fail_unless(sample.count == 128, "sample.count");
114-
sput_fail_unless(sample.count_90 == 115, "sample.count_90");
115-
sput_fail_unless(sample.sum == 8256.0, "sample.sum");
116-
sput_fail_unless(sample.sum_90 == 6670, "sample.sum_90");
117-
sput_fail_unless(floor(sample.std) == 36.0, "sample.std");
118-
sput_fail_unless(sample.median == 64.0, "sample.median");
119-
}
100+
for (j = 0; j < 128; ++j)
101+
brubeck_histo_push(&h, (double)(j + 1), 1.0);
102+
103+
sput_fail_unless(h.size == 128, "histogram size");
104+
sput_fail_unless(h.count == 128, "histogram value count");
105+
106+
brubeck_histo_sample(&sample, &h);
107+
108+
sput_fail_unless(sample.lower == 1.0, "sample.lower");
109+
sput_fail_unless(sample.upper == 128.0, "sample.upper");
110+
sput_fail_unless(sample.upper_90 == 115.0, "sample.upper_90");
111+
sput_fail_unless(sample.upper_99 == 127.0, "sample.upper_99");
112+
sput_fail_unless(sample.mean == 64.5, "sample.mean");
113+
sput_fail_unless(sample.mean_90 == 58.0, "sample.mean_90");
114+
sput_fail_unless(sample.count == 128, "sample.count");
115+
sput_fail_unless(sample.count_90 == 115, "sample.count_90");
116+
sput_fail_unless(sample.sum == 8256.0, "sample.sum");
117+
sput_fail_unless(sample.sum_90 == 6670, "sample.sum_90");
118+
sput_fail_unless(floor(sample.std) == 36.0, "sample.std");
119+
sput_fail_unless(sample.median == 64.0, "sample.median");
120120
}
121121

122122
void test_histogram__with_sample_rate(void)
@@ -138,6 +138,7 @@ void test_histogram__with_sample_rate(void)
138138
sput_fail_unless(sample.lower == 1.0, "sample.lower");
139139
sput_fail_unless(sample.upper == 128.0, "sample.upper");
140140
sput_fail_unless(sample.upper_90 == 115.0, "sample.upper_90");
141+
sput_fail_unless(sample.upper_99 == 127.0, "sample.upper_99");
141142
sput_fail_unless(sample.mean == 64.5, "sample.mean");
142143
sput_fail_unless(floor(sample.mean_90) == 57.0, "sample.mean_90");
143144
sput_fail_unless(sample.count == 1280, "sample.count");

0 commit comments

Comments
 (0)