From: Ole Troan Date: Wed, 18 Sep 2019 11:13:16 +0000 (+0200) Subject: stats: fix per_worker vector rate heap X-Git-Tag: v20.05-rc0~831 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=a41b0b78a4341478ee6c8701f9ec642b5c2d1cdd stats: fix per_worker vector rate heap The per_worker counters were outside of the stats heap. Also fixes the length of the per_vector counter. A simple vector is two dimensional including a thread dimension. Fixes: f89a6de8f0 Type: fix Signed-off-by: Ole Troan Change-Id: I370bf9cb033d264f42df2723e01b768dc270792b --- diff --git a/src/vpp/stats/stat_segment.c b/src/vpp/stats/stat_segment.c index 670d0910d26..11e72b2d87c 100644 --- a/src/vpp/stats/stat_segment.c +++ b/src/vpp/stats/stat_segment.c @@ -557,13 +557,17 @@ do_stat_segment_updates (stat_segment_main_t * sm) */ if (PREDICT_FALSE (num_worker_threads_set == 0)) { + void *oldheap = clib_mem_set_heap (sm->heap); + vlib_stat_segment_lock (); + sm->directory_vector[STAT_COUNTER_NUM_WORKER_THREADS].value = vec_len (vlib_mains) > 1 ? vec_len (vlib_mains) - 1 : 1; stat_validate_counter_vector (&sm->directory_vector - [STAT_COUNTER_VECTOR_RATE_PER_WORKER], - vec_len (vlib_mains)); + [STAT_COUNTER_VECTOR_RATE_PER_WORKER], 0); num_worker_threads_set = 1; + vlib_stat_segment_unlock (); + clib_mem_set_heap (oldheap); } /* @@ -590,7 +594,7 @@ do_stat_segment_updates (stat_segment_main_t * sm) vector_rate += this_vector_rate; /* Set the per-worker rate */ - counters[i - start][0] = this_vector_rate; + counters[0][i - start] = this_vector_rate; } /* And set the system average rate */