vty 'stats reset': do not reset stat_items

Exempt all stat_item statistics from 'stats reset'. Only reset rate_ctr
statistics to zero.

The rate_ctr statistics have an implicit time scale, counting occurences
per time unit. For them it makes sense to reset all ratings and start
from zero, for example in a test suite (e.g. our TTCN3 BSC_Tests).

In contrast, stat_item statistics count number of objects or nr of
specific object stati at any given time, and they do not deteriorate
over time. Many stat items depend on increment/decrement to be sane.

For example, in osmo-bsc, if the nr of connected BTS is 3, that does not
make sense to be reset to zero. There are still 3 BTS connected, only
the stat_item would suddenly reflect zero. From then on, it'd be wrong.

All stat_items are by definition wrong after a 'stats reset'.
- Those that depend on increment/decrement will be wrong until the
  program exits, and
- those that are set to absolute values will be wrong up until the next
  value is set. That could be seconds or hours later, depending.

Related: SYS#5542
Change-Id: If2134768b1076e7af189276c45f2a09a4944303e
This commit is contained in:
Neels Hofmeyr 2021-08-20 17:09:38 +02:00
parent 2bd4bc94f6
commit 923cb84270
1 changed files with 1 additions and 8 deletions

View File

@ -586,19 +586,12 @@ static int reset_rate_ctr_group_handler(struct rate_ctr_group *ctrg, void *sctx_
return 0;
}
static int reset_osmo_stat_item_group_handler(struct osmo_stat_item_group *statg, void *sctx_)
{
osmo_stat_item_group_reset(statg);
return 0;
}
DEFUN(stats_reset,
stats_reset_cmd,
"stats reset",
STATS_STR "Reset all stats\n")
STATS_STR "Reset all rate counter stats\n")
{
rate_ctr_for_each_group(reset_rate_ctr_group_handler, NULL);
osmo_stat_item_for_each_group(reset_osmo_stat_item_group_handler, NULL);
return CMD_SUCCESS;
}