This is an automated email from the git hooks/post-receive script.
dgoulet pushed a commit to branch main in repository tor.
commit 2f7e05d89d710f09bff9377edfb6d30e78163084 Author: Mike Perry mikeperry-git@torproject.org AuthorDate: Thu Nov 3 20:08:01 2022 +0000
metrics: Add stats when the clock stalls.
Part of #40708. --- src/core/or/congestion_control_common.c | 11 +++++++++++ src/core/or/congestion_control_common.h | 1 + src/feature/relay/relay_metrics.c | 9 +++++++++ 3 files changed, 21 insertions(+)
diff --git a/src/core/or/congestion_control_common.c b/src/core/or/congestion_control_common.c index 09d1d501da..c27eb2fca8 100644 --- a/src/core/or/congestion_control_common.c +++ b/src/core/or/congestion_control_common.c @@ -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; }
diff --git a/src/core/or/congestion_control_common.h b/src/core/or/congestion_control_common.h index e62775ecce..a2740fb0b6 100644 --- a/src/core/or/congestion_control_common.h +++ b/src/core/or/congestion_control_common.h @@ -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. */ diff --git a/src/feature/relay/relay_metrics.c b/src/feature/relay/relay_metrics.c index 9ceb61836e..af59eb3dcc 100644 --- a/src/feature/relay/relay_metrics.c +++ b/src/feature/relay/relay_metrics.c @@ -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,