diff options
author | Mike Perry <mikeperry-git@fscked.org> | 2010-06-15 18:02:19 -0700 |
---|---|---|
committer | Mike Perry <mikeperry-git@fscked.org> | 2010-06-15 20:04:49 -0700 |
commit | 2abe1ceccfacaa8deca3b7bb4caeb550572efd7f (patch) | |
tree | 121a7b7ab45ff3c0f7e9b40d4cd53921e5492e0d | |
parent | 82922ea45a24e7f79ac4c1ddf4d9de02c604546d (diff) | |
download | tor-2abe1ceccfacaa8deca3b7bb4caeb550572efd7f.tar.gz tor-2abe1ceccfacaa8deca3b7bb4caeb550572efd7f.zip |
Add CLOSE_MS and CLOSE_RATE keywords to buildtimeout event.
-rw-r--r-- | doc/spec/control-spec.txt | 8 | ||||
-rw-r--r-- | src/or/circuitbuild.c | 19 | ||||
-rw-r--r-- | src/or/control.c | 6 | ||||
-rw-r--r-- | src/or/or.h | 1 |
4 files changed, 30 insertions, 4 deletions
diff --git a/doc/spec/control-spec.txt b/doc/spec/control-spec.txt index 1938fa226c..419db3a715 100644 --- a/doc/spec/control-spec.txt +++ b/doc/spec/control-spec.txt @@ -1670,14 +1670,18 @@ The syntax is: "650" SP "BUILDTIMEOUT_SET" SP Type SP "TOTAL_TIMES=" Total SP "TIMEOUT_MS=" Timeout SP "XM=" Xm SP "ALPHA=" Alpha SP - "CUTOFF_QUANTILE=" Quantile SP "TIMEOUT_RATE=" Rate CRLF + "CUTOFF_QUANTILE=" Quantile SP "TIMEOUT_RATE=" TimeoutRate SP + "CLOSE_MS=" CloseTimeout SP "CLOSE_RATE=" CloseRate + CRLF Type = "COMPUTED" / "RESET" / "SUSPENDED" / "DISCARD" / "RESUME" Total = Integer count of timeouts stored Timeout = Integer timeout in milliseconds Xm = Estimated integer Pareto parameter Xm in milliseconds Alpha = Estimated floating point Paredo paremter alpha Quantile = Floating point CDF quantile cutoff point for this timeout - Rate = Floating point ratio of circuits that timeout + TimeoutRate = Floating point ratio of circuits that timeout + CloseTimeout = How long to keep measurement circs in milliseconds + CloseRate = Floating point ratio of measurement circuits that are closed A new circuit build timeout time has been set. If Type is "COMPUTED", Tor has computed the value based on historical data. If Type is "RESET", diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index f244aeaff0..ddc7da4b38 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1089,6 +1089,25 @@ circuit_build_times_timeout_rate(const circuit_build_times_t *cbt) } /** + * Count the number of closed circuits in a set of cbt data. + */ +double +circuit_build_times_close_rate(const circuit_build_times_t *cbt) +{ + int i=0,closed=0; + for (i = 0; i < CBT_NCIRCUITS_TO_OBSERVE; i++) { + if (cbt->circuit_build_times[i] == CBT_BUILD_ABANDONED) { + closed++; + } + } + + if (!cbt->total_build_times) + return 0; + + return ((double)closed)/cbt->total_build_times; +} + +/** * Store a timeout as a synthetic value. * * Returns true if the store was successful and we should possibly diff --git a/src/or/control.c b/src/or/control.c index b5cc6c7b6d..8cfebe6477 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -3530,11 +3530,13 @@ control_event_buildtimeout_set(const circuit_build_times_t *cbt, send_control_event(EVENT_BUILDTIMEOUT_SET, ALL_FORMATS, "650 BUILDTIMEOUT_SET %s TOTAL_TIMES=%lu " "TIMEOUT_MS=%lu XM=%lu ALPHA=%lf CUTOFF_QUANTILE=%lf " - "TIMEOUT_RATE=%lf\r\n", + "TIMEOUT_RATE=%lf CLOSE_MS=%lu CLOSE_RATE=%lf\r\n", type_string, (unsigned long)cbt->total_build_times, (unsigned long)cbt->timeout_ms, (unsigned long)cbt->Xm, cbt->alpha, qnt, - circuit_build_times_timeout_rate(cbt)); + circuit_build_times_timeout_rate(cbt), + (unsigned long)cbt->close_ms, + circuit_build_times_close_rate(cbt)); return 0; } diff --git a/src/or/or.h b/src/or/or.h index cd6841522b..65468cfe38 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3173,6 +3173,7 @@ void circuit_build_times_init(circuit_build_times_t *cbt); void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, networkstatus_t *ns); double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt); +double circuit_build_times_close_rate(const circuit_build_times_t *cbt); #ifdef CIRCUIT_PRIVATE double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt, |