]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
metrics: Add stats when reaching vegas delta or ss_cwnd_max
authorDavid Goulet <dgoulet@torproject.org>
Thu, 3 Nov 2022 17:12:47 +0000 (13:12 -0400)
committerDavid Goulet <dgoulet@torproject.org>
Mon, 7 Nov 2022 14:55:06 +0000 (09:55 -0500)
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
src/core/or/congestion_control_vegas.c
src/core/or/congestion_control_vegas.h
src/feature/relay/relay_metrics.c

index de89f294aa1f21ecadca454e41f0fc657b0929a5..0aecf592aa0cd969f889790c045936188c807255 100644 (file)
@@ -55,6 +55,11 @@ double cc_stats_vegas_exit_ss_cwnd_ma = 0;
 /* Running count of this moving average. Needed so we can update it. */
 static double stats_cwnd_exit_ss_ma_count = 0;
 
+/** Stats on how many times we reached "delta" param. */
+uint64_t cc_stats_vegas_above_delta = 0;
+/** Stats on how many times we reached "ss_cwnd_max" param. */
+uint64_t cc_stats_vegas_above_ss_cwnd_max = 0;
+
 /**
  * The original TCP Vegas congestion window BDP estimator.
  */
@@ -333,11 +338,13 @@ congestion_control_vegas_process_sendme(congestion_control_t *cc,
     if (cc->cwnd >= cc->vegas_params.ss_cwnd_max) {
       cc->cwnd = cc->vegas_params.ss_cwnd_max;
       congestion_control_vegas_exit_slow_start(circ, cc);
+      cc_stats_vegas_above_ss_cwnd_max++;
     }
   /* After slow start, We only update once per window */
   } else if (cc->next_cc_event == 0) {
     if (queue_use > cc->vegas_params.delta) {
       cc->cwnd = vegas_bdp(cc) + cc->vegas_params.delta - CWND_INC(cc);
+      cc_stats_vegas_above_delta++;
     } else if (queue_use > cc->vegas_params.beta || cc->blocked_chan) {
       cc->cwnd -= CWND_INC(cc);
     } else if (queue_use < cc->vegas_params.alpha) {
index 71f0ea571d2328ce15e0efb930fe91cd99cc4228..5aced07a8fb0875ec2db1cc45e51b0e735a69e78 100644 (file)
@@ -13,6 +13,8 @@
 #include "core/or/circuit_st.h"
 
 extern double cc_stats_vegas_exit_ss_cwnd_ma;
+extern uint64_t cc_stats_vegas_above_delta;
+extern uint64_t cc_stats_vegas_above_ss_cwnd_max;
 
 /* Processing SENDME cell. */
 int congestion_control_vegas_process_sendme(struct congestion_control_t *cc,
index c034ca02bd9f35dc17d03d1132629d82cf33dbdc..b95ca4ba06db9705c4d9cad1895ca09de631633a 100644 (file)
@@ -392,6 +392,22 @@ fill_cc_values(void)
           metrics_format_label("action", "cwnd"));
   metrics_store_entry_update(sentry,
                              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", "process_sendme"));
+  metrics_store_entry_add_label(sentry,
+          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", "process_sendme"));
+  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);
 }
 
 /** Helper: Fill in single stream metrics output. */