[tor-commits] [tor] 02/03: metrics: Split cc with counters and gauges

gitolite role git at cupani.torproject.org
Thu Nov 10 14:33:46 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 e94c27c0ab3c40ce7d421ef9cb2b27e0b6a08e0e
Author: David Goulet <dgoulet at torproject.org>
AuthorDate: Thu Nov 10 08:57:39 2022 -0500

    metrics: Split cc with counters and gauges
    
    Part of #40712
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/feature/relay/relay_metrics.c | 93 +++++++++++++++++++++++----------------
 src/feature/relay/relay_metrics.h | 32 +++++++-------
 2 files changed, 72 insertions(+), 53 deletions(-)

diff --git a/src/feature/relay/relay_metrics.c b/src/feature/relay/relay_metrics.c
index 6805f0e48b..b2c53f389a 100644
--- a/src/feature/relay/relay_metrics.c
+++ b/src/feature/relay/relay_metrics.c
@@ -39,7 +39,8 @@
 #include <event2/dns.h>
 
 /** Declarations of each fill function for metrics defined in base_metrics. */
-static void fill_cc_values(void);
+static void fill_cc_counters_values(void);
+static void fill_cc_gauges_values(void);
 static void fill_circuits_values(void);
 static void fill_conn_counter_values(void);
 static void fill_conn_gauge_values(void);
@@ -132,11 +133,18 @@ static const relay_metrics_entry_t base_metrics[] =
     .fill_fn = fill_streams_values,
   },
   {
-    .key = RELAY_METRICS_NUM_CC,
+    .key = RELAY_METRICS_CC_COUNTERS,
     .type = METRICS_TYPE_COUNTER,
     .name = METRICS_NAME(relay_congestion_control_total),
     .help = "Congestion control related counters",
-    .fill_fn = fill_cc_values,
+    .fill_fn = fill_cc_counters_values,
+  },
+  {
+    .key = RELAY_METRICS_CC_GAUGES,
+    .type = METRICS_TYPE_GAUGE,
+    .name = METRICS_NAME(relay_congestion_control),
+    .help = "Congestion control related gauges",
+    .fill_fn = fill_cc_gauges_values,
   },
   {
     .key = RELAY_METRICS_NUM_DOS,
@@ -384,14 +392,15 @@ fill_dos_values(void)
   metrics_store_entry_update(sentry, hs_dos_get_intro2_rejected_count());
 }
 
-/** Fill function for the RELAY_METRICS_NUM_CC metric. */
+/** Fill function for the RELAY_METRICS_CC_COUNTERS metric. */
 static void
-fill_cc_values(void)
+fill_cc_counters_values(void)
 {
-  const relay_metrics_entry_t *rentry = &base_metrics[RELAY_METRICS_NUM_CC];
+  const relay_metrics_entry_t *rentry =
+    &base_metrics[RELAY_METRICS_CC_COUNTERS];
+
   metrics_store_entry_t *sentry =
     metrics_store_add(the_store, rentry->type, rentry->name, rentry->help);
-
   metrics_store_entry_add_label(sentry,
           metrics_format_label("state", "starvation"));
   metrics_store_entry_add_label(sentry,
@@ -410,81 +419,89 @@ fill_cc_values(void)
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "slow_start_exit"));
+          metrics_format_label("state", "flow_control"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "cwnd"));
+          metrics_format_label("action", "xoff_num_sent"));
   metrics_store_entry_update(sentry,
-                             tor_llround(cc_stats_vegas_exit_ss_cwnd_ma));
+                             cc_stats_flow_num_xoff_sent);
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "on_circ_close"));
+          metrics_format_label("state", "flow_control"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "cwnd"));
+          metrics_format_label("action", "xon_num_sent"));
   metrics_store_entry_update(sentry,
-                             tor_llround(cc_stats_circ_close_cwnd_ma));
+                             cc_stats_flow_num_xon_sent);
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "on_circ_close"));
+          metrics_format_label("state", "cc_limits"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "ss_cwnd"));
-  metrics_store_entry_update(sentry,
-                             tor_llround(cc_stats_circ_close_ss_cwnd_ma));
+          metrics_format_label("action", "above_delta"));
+  metrics_store_entry_update(sentry, cc_stats_vegas_above_delta);
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "flow_control"));
+          metrics_format_label("state", "cc_limits"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "xoff_num_sent"));
-  metrics_store_entry_update(sentry,
-                             cc_stats_flow_num_xoff_sent);
+          metrics_format_label("action", "above_ss_cwnd_max"));
+  metrics_store_entry_update(sentry, cc_stats_vegas_above_ss_cwnd_max);
+}
 
-  sentry = metrics_store_add(the_store, rentry->type, rentry->name,
-                             rentry->help);
+/** Fill function for the RELAY_METRICS_CC_GAUGES metric. */
+static void
+fill_cc_gauges_values(void)
+{
+  const relay_metrics_entry_t *rentry =
+    &base_metrics[RELAY_METRICS_CC_GAUGES];
+
+  metrics_store_entry_t *sentry =
+    metrics_store_add(the_store, rentry->type, rentry->name, rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "flow_control"));
+          metrics_format_label("state", "slow_start_exit"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "xon_num_sent"));
+          metrics_format_label("action", "cwnd"));
   metrics_store_entry_update(sentry,
-                             cc_stats_flow_num_xon_sent);
+                             tor_llround(cc_stats_vegas_exit_ss_cwnd_ma));
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "buffers"));
+          metrics_format_label("state", "on_circ_close"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "xon_outbuf"));
+          metrics_format_label("action", "cwnd"));
   metrics_store_entry_update(sentry,
-                             tor_llround(cc_stats_flow_xon_outbuf_ma));
+                             tor_llround(cc_stats_circ_close_cwnd_ma));
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "buffers"));
+          metrics_format_label("state", "on_circ_close"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "xoff_outbuf"));
+          metrics_format_label("action", "ss_cwnd"));
   metrics_store_entry_update(sentry,
-                             tor_llround(cc_stats_flow_xoff_outbuf_ma));
+                             tor_llround(cc_stats_circ_close_ss_cwnd_ma));
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "cc_limits"));
+          metrics_format_label("state", "buffers"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "above_delta"));
-  metrics_store_entry_update(sentry, cc_stats_vegas_above_delta);
+          metrics_format_label("action", "xon_outbuf"));
+  metrics_store_entry_update(sentry,
+                             tor_llround(cc_stats_flow_xon_outbuf_ma));
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("state", "cc_limits"));
+          metrics_format_label("state", "buffers"));
   metrics_store_entry_add_label(sentry,
-          metrics_format_label("action", "above_ss_cwnd_max"));
-  metrics_store_entry_update(sentry, cc_stats_vegas_above_ss_cwnd_max);
+          metrics_format_label("action", "xoff_outbuf"));
+  metrics_store_entry_update(sentry,
+                             tor_llround(cc_stats_flow_xoff_outbuf_ma));
 
   sentry = metrics_store_add(the_store, rentry->type, rentry->name,
                              rentry->help);
diff --git a/src/feature/relay/relay_metrics.h b/src/feature/relay/relay_metrics.h
index f9fafd427c..1d2d649d8a 100644
--- a/src/feature/relay/relay_metrics.h
+++ b/src/feature/relay/relay_metrics.h
@@ -16,35 +16,37 @@
  * the base_metrics array. */
 typedef enum {
   /** Number of OOM invocation. */
-  RELAY_METRICS_NUM_OOM_BYTES  = 0,
+  RELAY_METRICS_NUM_OOM_BYTES,
   /** Number of onionskines handled. */
-  RELAY_METRICS_NUM_ONIONSKINS = 1,
+  RELAY_METRICS_NUM_ONIONSKINS,
   /** Number of sockets. */
-  RELAY_METRICS_NUM_SOCKETS    = 2,
+  RELAY_METRICS_NUM_SOCKETS,
   /** Number of global connection rate limit. */
-  RELAY_METRICS_NUM_GLOBAL_RW_LIMIT = 3,
+  RELAY_METRICS_NUM_GLOBAL_RW_LIMIT,
   /** Number of DNS queries. */
-  RELAY_METRICS_NUM_DNS        = 4,
+  RELAY_METRICS_NUM_DNS,
   /** Number of DNS query errors. */
-  RELAY_METRICS_NUM_DNS_ERRORS = 5,
+  RELAY_METRICS_NUM_DNS_ERRORS,
   /** Number of TCP exhaustion reached. */
-  RELAY_METRICS_NUM_TCP_EXHAUSTION = 6,
+  RELAY_METRICS_NUM_TCP_EXHAUSTION,
   /** Connections counters (always going up). */
-  RELAY_METRICS_CONN_COUNTERS = 7,
+  RELAY_METRICS_CONN_COUNTERS,
   /** Connections gauges. */
-  RELAY_METRICS_CONN_GAUGES = 8,
+  RELAY_METRICS_CONN_GAUGES,
   /** Number of streams. */
-  RELAY_METRICS_NUM_STREAMS = 9,
+  RELAY_METRICS_NUM_STREAMS,
   /** Congestion control counters. */
-  RELAY_METRICS_NUM_CC = 10,
+  RELAY_METRICS_CC_COUNTERS,
+  /** Congestion control gauges. */
+  RELAY_METRICS_CC_GAUGES,
   /** Denial of Service defenses subsystem. */
-  RELAY_METRICS_NUM_DOS = 11,
+  RELAY_METRICS_NUM_DOS,
   /** Denial of Service defenses subsystem. */
-  RELAY_METRICS_NUM_TRAFFIC = 12,
+  RELAY_METRICS_NUM_TRAFFIC,
   /** Relay flags. */
-  RELAY_METRICS_RELAY_FLAGS = 13,
+  RELAY_METRICS_RELAY_FLAGS,
   /** Numer of circuits. */
-  RELAY_METRICS_NUM_CIRCUITS = 14,
+  RELAY_METRICS_NUM_CIRCUITS,
 } relay_metrics_key_t;
 
 /** The metadata of a relay metric. */

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


More information about the tor-commits mailing list