Uploaded image for project: 'ZABBIX BUGS AND ISSUES'
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-5077

Calculation error in 95th percentile

    XMLWordPrintable

Details

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            attilla Attilla de Groot
            Votes:
            3 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: