tcp: add simple stats collector
Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I435ff10fa3af15b0bed83607aca508a1c087a159
This commit is contained in:

committed by
Dave Barach

parent
1c95e12b0d
commit
6052f4b9d8
@ -25,6 +25,8 @@
|
||||
#include <vnet/dpo/load_balance.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <vlib/stats/stats.h>
|
||||
|
||||
tcp_main_t tcp_main;
|
||||
|
||||
typedef struct
|
||||
@ -1458,6 +1460,46 @@ tcp_initialize_iss_seed (tcp_main_t * tm)
|
||||
tm->iss_seed.second = random_u64 (&time_now);
|
||||
}
|
||||
|
||||
static void
|
||||
tcp_stats_collector_fn (vlib_stats_collector_data_t *d)
|
||||
{
|
||||
tcp_main_t *tm = vnet_get_tcp_main ();
|
||||
counter_t **counters = d->entry->data;
|
||||
counter_t *cb = counters[0];
|
||||
tcp_wrk_stats_t acc = {};
|
||||
tcp_worker_ctx_t *wrk;
|
||||
|
||||
vec_foreach (wrk, tm->wrk_ctx)
|
||||
{
|
||||
#define _(name, type, str) acc.name += wrk->stats.name;
|
||||
foreach_tcp_wrk_stat
|
||||
#undef _
|
||||
}
|
||||
|
||||
#define _(name, type, str) cb[TCP_STAT_##name] = acc.name;
|
||||
foreach_tcp_wrk_stat
|
||||
#undef _
|
||||
}
|
||||
|
||||
static void
|
||||
tcp_counters_init (void)
|
||||
{
|
||||
vlib_stats_collector_reg_t r = {};
|
||||
u32 idx;
|
||||
|
||||
r.entry_index = idx = vlib_stats_add_counter_vector ("/sys/tcp");
|
||||
r.collect_fn = tcp_stats_collector_fn;
|
||||
vlib_stats_validate (idx, 0, TCP_STAT_no_buffer);
|
||||
|
||||
#define _(name, type, str) \
|
||||
vlib_stats_add_symlink (idx, TCP_STAT_##name, "/sys/tcp/%s", \
|
||||
CLIB_STRING_MACRO (name));
|
||||
foreach_tcp_wrk_stat
|
||||
#undef _
|
||||
|
||||
vlib_stats_register_collector_fn (&r);
|
||||
}
|
||||
|
||||
static clib_error_t *
|
||||
tcp_main_enable (vlib_main_t * vm)
|
||||
{
|
||||
@ -1534,6 +1576,8 @@ tcp_main_enable (vlib_main_t * vm)
|
||||
tm->bytes_per_buffer = vlib_buffer_get_default_data_size (vm);
|
||||
tm->cc_last_type = TCP_CC_LAST;
|
||||
|
||||
tcp_counters_init ();
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,13 @@ typedef struct tcp_wrk_stats_
|
||||
#undef _
|
||||
} tcp_wrk_stats_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
#define _(name, type, str) TCP_STAT_##name,
|
||||
foreach_tcp_wrk_stat
|
||||
#undef _
|
||||
} tcp_wrk_stats_e;
|
||||
|
||||
typedef struct tcp_free_req_
|
||||
{
|
||||
clib_time_type_t free_time;
|
||||
|
Reference in New Issue
Block a user