aboutsummaryrefslogtreecommitdiff
path: root/src/or/rephist.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2013-09-04 17:43:15 -0400
committerRoger Dingledine <arma@torproject.org>2013-09-05 01:44:52 -0400
commit2c877d2da4a989639311de11e4ada8dd03bc8187 (patch)
treebe7544f239f3da21443c967158e4ebf47303d2c4 /src/or/rephist.c
parentf51add6dbcef073d3ba57df13eee3c99d647fde9 (diff)
downloadtor-2c877d2da4a989639311de11e4ada8dd03bc8187.tar
tor-2c877d2da4a989639311de11e4ada8dd03bc8187.tar.gz
collect and log statistics about onionskins received/processed
we skip onionskins that came from non-relays, so we're less likely to run into privacy troubles. starts to implement ticket 9658.
Diffstat (limited to 'src/or/rephist.c')
-rw-r--r--src/or/rephist.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 55f321d5f..131e531b1 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -3011,6 +3011,47 @@ rep_hist_conn_stats_write(time_t now)
return start_of_conn_stats_interval + WRITE_STATS_INTERVAL;
}
+/** Internal statistics to track how many requests of each type of
+ * handshake we've received, and how many we've completed. Useful for
+ * seeing trends in cpu load.
+ * @{ */
+static int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1] = {0};
+static int onion_handshakes_completed[MAX_ONION_HANDSHAKE_TYPE+1] = {0};
+/**@}*/
+
+/** A new onionskin (using the <b>type</b> handshake) has arrived. */
+void
+rep_hist_note_circuit_handshake_requested(uint16_t type)
+{
+ if (type <= MAX_ONION_HANDSHAKE_TYPE)
+ onion_handshakes_requested[type]++;
+}
+
+/** We've sent an onionskin (using the <b>type</b> handshake) to a
+ * cpuworker. */
+void
+rep_hist_note_circuit_handshake_completed(uint16_t type)
+{
+ if (type <= MAX_ONION_HANDSHAKE_TYPE)
+ onion_handshakes_completed[type]++;
+}
+
+/** Log our onionskin statistics since the last time we were called. */
+void
+rep_hist_log_circuit_handshake_stats(time_t now)
+{
+ (void)now;
+ /* XXX024 maybe quiet this log message before 0.2.4 goes stable for real */
+ log_notice(LD_HIST, "Circuit handshake stats since last time: "
+ "%d/%d TAP, %d/%d NTor.",
+ onion_handshakes_completed[ONION_HANDSHAKE_TYPE_TAP],
+ onion_handshakes_requested[ONION_HANDSHAKE_TYPE_TAP],
+ onion_handshakes_completed[ONION_HANDSHAKE_TYPE_NTOR],
+ onion_handshakes_requested[ONION_HANDSHAKE_TYPE_NTOR]);
+ memset(onion_handshakes_completed, 0, sizeof(onion_handshakes_completed));
+ memset(onion_handshakes_requested, 0, sizeof(onion_handshakes_requested));
+}
+
/** Free all storage held by the OR/link history caches, by the
* bandwidth history arrays, by the port history, or by statistics . */
void