Address nickm's issues from his review #1.

This commit is contained in:
Mike Perry 2009-09-15 18:00:48 -07:00
parent 81dc435ffa
commit 5bd60d8a41
2 changed files with 22 additions and 6 deletions

View File

@ -88,7 +88,7 @@ static smartlist_t *entry_guards = NULL;
static int entry_guards_dirty = 0; static int entry_guards_dirty = 0;
/** If set, we're running the unit tests: we should avoid clobbering /** If set, we're running the unit tests: we should avoid clobbering
* our state file. */ * our state file or accessing get_options() or get_or_state() */
static int unit_tests = 0; static int unit_tests = 0;
/********* END VARIABLES ************/ /********* END VARIABLES ************/
@ -427,11 +427,15 @@ circuit_build_times_update_alpha(circuit_build_times_t *cbt)
cbt->Xm = circuit_build_times_mode(cbt); cbt->Xm = circuit_build_times_mode(cbt);
for (i=0; i< NCIRCUITS_TO_OBSERVE; i++) { for (i=0; i< NCIRCUITS_TO_OBSERVE; i++) {
if (!x[i]) continue; if (!x[i]) {
continue;
}
// Hrmm, should we count < Xm as Xm or just drop if (x[i] < cbt->Xm) {
if (x[i] < cbt->Xm) a += ln(cbt->Xm); a += ln(cbt->Xm);
else a += ln(x[i]); } else {
a += ln(x[i]);
}
n++; n++;
} }

View File

@ -2875,12 +2875,13 @@ void entry_guards_free_all(void);
#define NCIRCUITS_TO_OBSERVE 5000 #define NCIRCUITS_TO_OBSERVE 5000
/** Width of the histogram bins in milliseconds */ /** Width of the histogram bins in milliseconds */
#define BUILDTIME_BIN_WIDTH 50 #define BUILDTIME_BIN_WIDTH ((build_time_t)50)
/** Cuttof point on the CDF for our timeout estimation. /** Cuttof point on the CDF for our timeout estimation.
* TODO: This should be moved to the consensus */ * TODO: This should be moved to the consensus */
#define BUILDTIMEOUT_QUANTILE_CUTOFF 0.8 #define BUILDTIMEOUT_QUANTILE_CUTOFF 0.8
/** A build_time_t is milliseconds */
typedef uint32_t build_time_t; typedef uint32_t build_time_t;
#define BUILD_TIME_MAX ((build_time_t)(INT32_MAX)) #define BUILD_TIME_MAX ((build_time_t)(INT32_MAX))
@ -2900,15 +2901,26 @@ typedef uint32_t build_time_t;
#define BUILD_TIMES_SAVE_STATE_EVERY 10 #define BUILD_TIMES_SAVE_STATE_EVERY 10
typedef struct { typedef struct {
/** The circular array of recorded build times in milliseconds */
build_time_t circuit_build_times[NCIRCUITS_TO_OBSERVE]; build_time_t circuit_build_times[NCIRCUITS_TO_OBSERVE];
/** The timestamp we last completed a TLS handshake or received a cell */
time_t network_last_live; time_t network_last_live;
/** Last time we built a circuit. Used to decide to build new test circs */
time_t last_circ_at; time_t last_circ_at;
/** Current index in the circuit_build_times circular array */
int build_times_idx; int build_times_idx;
/** Total number of build times accumulated. Maxes at NCIRCUITS_TO_OBSERVE */
int total_build_times; int total_build_times;
/** Number of timeouts that have happened before estimating pareto
* parameters */
int pre_timeouts; int pre_timeouts;
/** "Minimum" value of our pareto distribution (actually mode) */
build_time_t Xm; build_time_t Xm;
/** alpha exponent for pareto dis */
double alpha; double alpha;
/** Have we computed a timeout? */
int have_computed_timeout; int have_computed_timeout;
/** The value for that timeout in seconds, not milliseconds */
int timeout; int timeout;
} circuit_build_times_t; } circuit_build_times_t;