metrics: Add stats when the clock stalls.

Part of #40708.
This commit is contained in:
Mike Perry 2022-11-03 20:08:01 +00:00 committed by David Goulet
parent 83fdaff7c0
commit 2f7e05d89d
3 changed files with 21 additions and 0 deletions

View File

@ -94,6 +94,9 @@ void congestion_control_set_cc_enabled(void);
/* Number of times the RTT value was reset. For MetricsPort. */
static uint64_t num_rtt_reset;
/* Number of times the clock was stalled. For MetricsPort. */
static uint64_t num_clock_stalls;
/* Consensus parameters cached. The non static ones are extern. */
static uint32_t cwnd_max = CWND_MAX_DFLT;
int32_t cell_queue_high = CELL_QUEUE_HIGH_DFLT;
@ -136,6 +139,13 @@ congestion_control_get_num_rtt_reset(void)
return num_rtt_reset;
}
/** Return the number of clock stalls that have been done. */
uint64_t
congestion_control_get_num_clock_stalls(void)
{
return num_clock_stalls;
}
/**
* Update global congestion control related consensus parameter values,
* every consensus update.
@ -872,6 +882,7 @@ congestion_control_update_circuit_rtt(congestion_control_t *cc,
/* Do not update RTT at all if it looks fishy */
if (time_delta_stalled_or_jumped(cc, cc->ewma_rtt_usec, rtt)) {
num_clock_stalls++; /* Accounting */
return 0;
}

View File

@ -83,6 +83,7 @@ bool congestion_control_validate_sendme_increment(uint8_t sendme_inc);
char *congestion_control_get_control_port_fields(const origin_circuit_t *);
uint64_t congestion_control_get_num_rtt_reset(void);
uint64_t congestion_control_get_num_clock_stalls(void);
/* Ugh, C.. these are private. Use the getter instead, when
* external to the congestion control code. */

View File

@ -373,6 +373,15 @@ fill_cc_values(void)
metrics_format_label("action", "rtt_reset"));
metrics_store_entry_update(sentry, congestion_control_get_num_rtt_reset());
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
rentry->help);
metrics_store_entry_add_label(sentry,
metrics_format_label("state", "clock_stalls"));
metrics_store_entry_add_label(sentry,
metrics_format_label("action", "rtt_skipped"));
metrics_store_entry_update(sentry,
congestion_control_get_num_clock_stalls());
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
rentry->help);
metrics_store_entry_add_label(sentry,