[rate_ctr] always 'overflow' in next larger inetrval when interval ends
If a second ends, we add the number of events in that just-ended second to the number of events in the currently running minute. The same happens at the end of a minute: We add the number of events in that just-ended minute into the number of events of the still-running hour, etc. This gives a much more meaningful numbers and we don't end up with "12 events per second, but 0 events per minute" kind of situations anymore.
This commit is contained in:
parent
cf734784b0
commit
d2dce6df04
|
@ -24,6 +24,7 @@
|
|||
#include <inttypes.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <osmocore/utils.h>
|
||||
#include <osmocore/linuxlist.h>
|
||||
#include <osmocore/talloc.h>
|
||||
#include <osmocore/timer.h>
|
||||
|
@ -75,6 +76,11 @@ static void interval_expired(struct rate_ctr *ctr, enum rate_ctr_intv intv)
|
|||
ctr->intv[intv].rate = ctr->current - ctr->intv[intv].last;
|
||||
/* save current counter for next interval */
|
||||
ctr->intv[intv].last = ctr->current;
|
||||
|
||||
/* update the rate of the next bigger interval. This will
|
||||
* be overwritten when that next larger interval expires */
|
||||
if (intv + 1 < ARRAY_SIZE(ctr->intv))
|
||||
ctr->intv[intv+1].rate += ctr->intv[intv].rate;
|
||||
}
|
||||
|
||||
static struct timer_list rate_ctr_timer;
|
||||
|
|
Loading…
Reference in New Issue