|
@@ -3011,6 +3011,47 @@ rep_hist_conn_stats_write(time_t now)
|
|
|
return start_of_conn_stats_interval + WRITE_STATS_INTERVAL;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 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};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+void
|
|
|
+rep_hist_note_circuit_handshake_requested(uint16_t type)
|
|
|
+{
|
|
|
+ if (type <= MAX_ONION_HANDSHAKE_TYPE)
|
|
|
+ onion_handshakes_requested[type]++;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ * cpuworker. */
|
|
|
+void
|
|
|
+rep_hist_note_circuit_handshake_completed(uint16_t type)
|
|
|
+{
|
|
|
+ if (type <= MAX_ONION_HANDSHAKE_TYPE)
|
|
|
+ onion_handshakes_completed[type]++;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void
|
|
|
+rep_hist_log_circuit_handshake_stats(time_t now)
|
|
|
+{
|
|
|
+ (void)now;
|
|
|
+
|
|
|
+ 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));
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
* bandwidth history arrays, by the port history, or by statistics . */
|
|
|
void
|