credit scaling

svn path=/trunk/boinc/; revision=8783
This commit is contained in:
David Anderson 2005-11-01 19:46:46 +00:00
parent f0ece97a8b
commit 0733150680
3 changed files with 40 additions and 9 deletions

View File

@ -13478,3 +13478,24 @@ David 31 Oct 2005
sched/ sched/
handle_request.C handle_request.C
sched_config.C,h sched_config.C,h
David 1 Nov 2005
- Addendum to yesterday's checkin.
It turns out that, on average, the int benchmark
is twice the FP benchmark.
So if a project were to set its fp_benchmark_weight to 1,
the average credit per CPU second would decrease by 1/3.
Similarly it would increase if fp_benchmark_weight were 0.
To fix this, I added a scaling factor that maintains a
constant average credit per CPU second
(the same average as the current 50/50 weighting)
regardless of fp_benchmark_weight.
- relax Curl timeout parameters; apparently some users going through
proxies were geting consistent timeout.
client/
http_curl.C
sched/
handle_request.C

View File

@ -321,9 +321,9 @@ The checking this option controls is of the identity that the server claims. The
// setup timeouts // setup timeouts
curlErr = curl_easy_setopt(curlEasy, CURLOPT_TIMEOUT, 0L); curlErr = curl_easy_setopt(curlEasy, CURLOPT_TIMEOUT, 0L);
curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_LIMIT, 50L); curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_LIMIT, 10L);
curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_TIME, 30L); curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_TIME, 300L);
curlErr = curl_easy_setopt(curlEasy, CURLOPT_CONNECTTIMEOUT, 60L); curlErr = curl_easy_setopt(curlEasy, CURLOPT_CONNECTTIMEOUT, 120L);
// force curl to use HTTP/1.0 (which the old BOINC http libraries did) // force curl to use HTTP/1.0 (which the old BOINC http libraries did)
//curlErr = curl_easy_setopt(curlEasy, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //curlErr = curl_easy_setopt(curlEasy, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

View File

@ -301,18 +301,28 @@ make_new_host:
// Could also include terms for RAM size, network speed etc. // Could also include terms for RAM size, network speed etc.
// //
static void compute_credit_rating(HOST& host) { static void compute_credit_rating(HOST& host) {
double fpw, intw; double fpw, intw, scale, x;
if (config.use_benchmark_weights) { if (config.use_benchmark_weights) {
fpw = config.fp_benchmark_weight; fpw = config.fp_benchmark_weight;
intw = 1. - config.fp_benchmark_weight; intw = 1. - fpw;
// FP benchmark is 2x int benchmark, on average.
// Compute a scaling factor the gives the same credit per day
// no matter how benchmarks are weighted
//
scale = 1.5 / (2*intw + fpw);
} else { } else {
fpw = .5; fpw = .5;
intw = .5; intw = .5;
scale = 1;
} }
host.credit_per_cpu_sec = x = fpw*fabs(host.p_fpops) + intw*fabs(host.p_iops);
fpw*(fabs(host.p_fpops)/1e9 + intw*fabs(host.p_iops)/1e9) x /= 1e9;
* COBBLESTONE_FACTOR / (SECONDS_PER_DAY); x *= COBBLESTONE_FACTOR;
x /= SECONDS_PER_DAY;
x *= scale;
host.credit_per_cpu_sec = x;
} }
static double fpops_to_credit(double fpops) { static double fpops_to_credit(double fpops) {