more cleanups on r11258. looks good now.

svn:r11266
This commit is contained in:
Roger Dingledine 2007-08-24 10:50:48 +00:00
parent 738ecba367
commit daece599a1
2 changed files with 17 additions and 23 deletions

View File

@ -8,11 +8,11 @@ Changes in version 0.2.0.6-alpha - 2007-??-??
proportionally less, since they already have enough load. Patch
from Mike Perry.
- Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
will allow fast Tor servers to get more attention. Also, when we're
upgrading from an old Tor version, forget our current guards and
pick new ones according to the new weightings. The resulting load
balancing improvement could raise effective network capacity by
a factor of four. Thanks to Mike Perry for measurements.
will allow fast Tor servers to get more attention.
- When we're upgrading from an old Tor version, forget our current
guards and pick new ones according to the new weightings. These
three load balancing patches could raise effective network capacity
by a factor of four. Thanks to Mike Perry for measurements.
o Major bugfixes:
- Handle unexpected whitespace better in malformed descriptors. Bug

View File

@ -1287,8 +1287,6 @@ get_max_believable_bandwidth(void)
* some in the list because they exit to obscure ports. If not <b>for_exit</b>,
* we're picking a non-exit node: weight exit-node's bandwidth less
* depending on the smallness of the fraction of Exit-to-total bandwidth.
* Beware: this flag is often abused to force uniform selection when
* we are not actually choosing exits!
*
* If <b>for_guard</b>, we're picking a guard node: consider all guard's
* bandwidth equally. Otherwise, weight guards proportionally less.
@ -1358,18 +1356,14 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, int for_exit, int for_guard,
/* if they claim something huge, don't believe it */
if (this_bw > max_believable_bw) {
char fp[HEX_DIGEST_LEN+1];
if (status) {
base16_encode(fp, sizeof(fp),
status->identity_digest, DIGEST_LEN);
} else if (router) {
base16_encode(fp, sizeof(fp),
router->cache_info.identity_digest, DIGEST_LEN);
}
log_notice(LD_DIR,
"Bandwidth %d for router %s (%s) exceeds allowed max %d, capping",
this_bw, router ? router->nickname : "(null)",
status || router ? fp : "0",
max_believable_bw);
base16_encode(fp, sizeof(fp), statuses ?
status->identity_digest :
router->cache_info.identity_digest,
DIGEST_LEN);
log_fn(LOG_PROTOCOL_WARN, LD_DIR,
"Bandwidth %d for router %s (%s) exceeds allowed max %d, capping",
this_bw, router ? router->nickname : "(null)",
fp, max_believable_bw);
this_bw = max_believable_bw;
}
if (is_known) {
@ -1473,10 +1467,10 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, int for_exit, int for_guard,
", guard bw = "U64_FORMAT
", nonguard bw = "U64_FORMAT", guard weight = %lf "
"(for guard == %d)",
U64_PRINTF_ARG(total_bw),
U64_PRINTF_ARG(total_exit_bw), U64_PRINTF_ARG(total_nonexit_bw),
U64_PRINTF_ARG(total_bw),
U64_PRINTF_ARG(total_exit_bw), U64_PRINTF_ARG(total_nonexit_bw),
exit_weight, for_exit,
U64_PRINTF_ARG(total_guard_bw), U64_PRINTF_ARG(total_nonguard_bw),
U64_PRINTF_ARG(total_guard_bw), U64_PRINTF_ARG(total_nonguard_bw),
guard_weight, for_guard);
/* Almost done: choose a random value from the bandwidth weights. */
@ -1495,7 +1489,7 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, int for_exit, int for_guard,
tmp += ((uint64_t)(bandwidths[i] * guard_weight));
else if (is_exit)
tmp += ((uint64_t)(bandwidths[i] * exit_weight));
else
else
tmp += bandwidths[i];
if (tmp >= rand_bw)