diff --git a/checkin_notes b/checkin_notes index 83ecfd5c39..6318b95a40 100755 --- a/checkin_notes +++ b/checkin_notes @@ -13478,3 +13478,24 @@ David 31 Oct 2005 sched/ handle_request.C 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 diff --git a/client/http_curl.C b/client/http_curl.C index 28cd45a319..8941a8a76e 100644 --- a/client/http_curl.C +++ b/client/http_curl.C @@ -321,9 +321,9 @@ The checking this option controls is of the identity that the server claims. The // setup timeouts 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_TIME, 30L); - curlErr = curl_easy_setopt(curlEasy, CURLOPT_CONNECTTIMEOUT, 60L); + curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_LIMIT, 10L); + curlErr = curl_easy_setopt(curlEasy, CURLOPT_LOW_SPEED_TIME, 300L); + curlErr = curl_easy_setopt(curlEasy, CURLOPT_CONNECTTIMEOUT, 120L); // 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); diff --git a/sched/handle_request.C b/sched/handle_request.C index 511d0a23e5..9c30bec390 100644 --- a/sched/handle_request.C +++ b/sched/handle_request.C @@ -301,18 +301,28 @@ make_new_host: // Could also include terms for RAM size, network speed etc. // static void compute_credit_rating(HOST& host) { - double fpw, intw; + double fpw, intw, scale, x; if (config.use_benchmark_weights) { + 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 { fpw = .5; intw = .5; - + scale = 1; } - host.credit_per_cpu_sec = - fpw*(fabs(host.p_fpops)/1e9 + intw*fabs(host.p_iops)/1e9) - * COBBLESTONE_FACTOR / (SECONDS_PER_DAY); + x = fpw*fabs(host.p_fpops) + intw*fabs(host.p_iops); + x /= 1e9; + x *= COBBLESTONE_FACTOR; + x /= SECONDS_PER_DAY; + x *= scale; + host.credit_per_cpu_sec = x; } static double fpops_to_credit(double fpops) {