Search code examples
javametricsyammer

What do minute rates of Timer and Meter metrics indicate?


We are trying to achieve reporting functionality based on information from Yammer metrics.

Yammer metrics provides information about Timers and Meters as shown below:

METER_METRIC:
             count = 1
         mean rate = 0.01 count/s
     1-minute rate = 0.00 count/s
     5-minute rate = 0.00 count/s
    15-minute rate = 0.00 count/s

TIMER_METRIC:
             count = 1
         mean rate = 0.01 calls/s
     1-minute rate = 0.01 calls/s
     5-minute rate = 0.00 calls/s
    15-minute rate = 0.00 calls/s
               min = 89.77ms
               max = 89.77ms
              mean = 89.77ms
            stddev = 0.00ms
            median = 89.77ms
              75% <= 89.77ms
              95% <= 89.77ms
              98% <= 89.77ms
              99% <= 89.77ms
            99.9% <= 89.77ms

I read an overview and am able to get the application statistics as shown above. The Timer and Meter metrics have information about the 1-minute rate, 5-minute rate and 15-minute rate.

Question:

What do the minute rates of the Timer and Meter metrics indicate and how those are getting calculated?


Solution

  • All (mean|1-min|5-minute|15-minute)-rate metrics indicate throughput; i.e., how many units of information (events) where processed per second.

    Mean rate

    Calculates the rate at which events have occurred since the meter was created. But that's not very useful because it doesn't represent what is happening right now.

    Minute rates

    Calculates the rate at which events have ocurred using a technique called Exponentially-weighted moving average (EWMA).

    This rate has the same exponential decay factor as the fifteen-minute load average in the top Unix command.

    More Information

    Take a look at the source code of Timer.java, Meter.java and EWMA.java

    If you have more time, take a look at a talk about the topic by Coda Hale: Metrics, Metrics, Everywhere - Coda Hale