[tor-commits] [tor] 07/15: metrics: Add stats when the clock stalls.

gitolite role git at cupani.torproject.org
Tue Nov 8 17:49:43 UTC 2022


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 at 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,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list