-
Incident report
-
Resolution: Fixed
-
Critical
-
None
Hi,
I'd like to use the 95th percentile for billing purposes, but since the api or frontend doesn't support getting the value directly I have to calculate it mysql. But no matter how I calculate the value, it is always high than the value displayed in the graph.
As you can see in the attached graph, the 95th percentile is 5,72Gb/s. But when I calculate (n=95/100*550+1/2) the percentile from the mysql data:
mysql> select count(*) from history_uint where itemid = 39167; +----------+ | count(*) | +----------+ | 550 | +----------+ 1 row in set (0.00 sec)
mysql> select * from history_uint where itemid = 39167 order by value desc limit 25,5; +--------+------------+------------+-----------+ | itemid | clock | value | ns | +--------+------------+------------+-----------+ | 39167 | 1337971067 | 5959796816 | 567141320 | | 39167 | 1337977367 | 5933375808 | 808058345 | | 39167 | 1337969567 | 5923229816 | 167354372 | | 39167 | 1337978567 | 5916897936 | 794447090 | | 39167 | 1337968967 | 5890801240 | 184057883 | +--------+------------+------------+-----------+ 5 rows in set (0.05 sec)
You can have a discussion if you should the number up or down, but if I use my calculation to get the value displayed in the graph, it would actually be ~90th percentile:
mysql> select * from history_uint where itemid = 39167 order by value desc limit 52,5 -> ; +--------+------------+------------+-----------+ | itemid | clock | value | ns | +--------+------------+------------+-----------+ | 39167 | 1338055967 | 5743761168 | 738804166 | | 39167 | 1338114768 | 5727882896 | 184340026 | | 39167 | 1338062867 | 5723286872 | 31496589 | | 39167 | 1338060467 | 5723070512 | 802785945 | | 39167 | 1338061667 | 5718211304 | 693634107 | +--------+------------+------------+-----------+ 5 rows in set (0.05 sec)
This would create problems for people that display graphs to customers including the 95th percentile, but as in my case, bill on a higher value. I've included a dump of the data for this item.