diff --git a/checkin_notes b/checkin_notes index 3a9fc2a7fb..d0170a7510 100755 --- a/checkin_notes +++ b/checkin_notes @@ -1806,3 +1806,10 @@ David 14 Feb 2006 client/ acct_setup.C,h gui_http.C,h + +David 14 Feb 2006 + - core client: on Windows, use commit mode ("wc") for state file + (from Walt Gribben) + + client + cs_statefile.C diff --git a/client/cs_statefile.C b/client/cs_statefile.C index 05fa8b963e..b0d4be8efb 100644 --- a/client/cs_statefile.C +++ b/client/cs_statefile.C @@ -349,7 +349,11 @@ int CLIENT_STATE::write_state_file() { SCOPE_MSG_LOG scope_messages(log_messages, CLIENT_MSG_LOG::DEBUG_STATE); scope_messages.printf("CLIENT_STATE::write_state_file(): Writing state file\n"); +#ifdef _WIN32 + retval = mf.open(STATE_FILE_NEXT, "wc"); +#else retval = mf.open(STATE_FILE_NEXT, "w"); +#endif if (retval) { msg_printf(0, MSG_ERROR, "Can't open temporary state file: %s %s", diff --git a/doc/boinc_news.inc b/doc/boinc_news.inc index 78a18a7eea..d4bd84624b 100644 --- a/doc/boinc_news.inc +++ b/doc/boinc_news.inc @@ -1,6 +1,25 @@ $project_news = array( +array("February 14, 2006", + "BOINC and Climateprediction.net have joined forces with the BBC + to launch a new experiment -- a full simulation of climate change + from 1920 to 2080. + The experiment is described on + a BBC television documentary Meltdown + (BBC-4, February 20th, for UK BOINCers). + Simplified client software is available + at bbc.co.uk/climatechange. + Experienced BOINCers can attach to http://bbc.cpdn.org + (check out the new graphics!). + Be warned that a 160-year climate simulation is a long workunit even + by Climateprediction.net's extravagant standards. + But if you have a fast machine and are prepared to give + us first call on your CPU, just for the next couple of months, + then you could see your results in a second BBC television programme + scheduled for May. + " +), array("February 8, 2006", "The SZTAKI Desktop Grid is now in production. diff --git a/doc/index.php b/doc/index.php index 5ef476450c..814e151704 100644 --- a/doc/index.php +++ b/doc/index.php @@ -37,28 +37,29 @@ resources. BOINC lets you donate computing power to scientific research projects such as:
You can participate in more than one project, diff --git a/doc/sched.php b/doc/sched.php index 01787f0d27..6bd9f2bd2d 100644 --- a/doc/sched.php +++ b/doc/sched.php @@ -198,115 +198,64 @@ applied to the current work queue.
-The work-fetch policy is defined in terms of a basic function +The work-fetch policy uses the functions
-time_until_work_done(project, N, subset_resource_share) - // estimate wall time until the number of uncompleted results - // for this project will reach N, - // given the total resource share for a set of competing projects +prrs(project P)+
+P's fractional resource share among potentially runnable projects. ++ +
+min_results(project P) ++
+The minimum number of runnable results needed to +maintain P's resource share on this machine: namely, ++
+ceil(ncpus*prrs(P)) +
+time_until_work_done(project P) ++
+The estimated wall time until the number of +uncompleted results for this project will reach min_results(P)-1, +assuming round-robin scheduling among +the current potentially runnable projects. +
The work-fetch policy function is called every 5 seconds (or as needed) by the scheduler RPC polling function. -It sets the following variables: -
+ work_request_size(P): + the number of seconds of work to request if we do a scheduler RPC to P. + This is
The scheduler RPC mechanism may select a project to contact because of a user request, an outstanding trickle-up message, or a result that is overdue for reporting. If it does so, it will also request work from that project. - -
-Otherwise, the RPC mechanism calls the following function and -gets work from that project, if any. +Otherwise, the RPC mechanism chooses the project P for which
-next_project_need_work() - if global_urgency == DONT_NEED return null - Pbest = null; - for each project P - if P.urgency != DONT_NEED and P.work_request_size > 0 - if P.urgency == OK and global_urgency == OK - continue - P.score = P.long_term_debt - time_until_work_done(P, 0, prrs) - if Pbest - if P.score > Pbest.score - Pbest = P - else - Pbest = p - return Pbest -- -
-The work-fetch policy function is as follows: -
-// compute global urgency - -x = delay until number of runnable results will be < ncpus -if x == 0 - global_urgency = NEED_IMMEDIATELY -else - if CPU scheduling mode is EDF - global_urgency = DONT_NEED - else - P = project with greatest long-term debt - suppose we got work from P - if round-robin would then miss a deadline - global_urgency = DONT_NEED - else - if x < min_queue - global_urgency = NEED - else - global_urgency = OK - -// compute per-project urgencies and work request sizes - -if global_urgency != DONT_NEED - for each project P - N = ncpus/(fractional potentially runnable resource_share) - (i.e. number of results we need on hand to - keep enough CPUs busy to maintain resource share) - x = time until # of runnable results for P will fall below N - if x == 0 - P.urgency = NEED_IMMEDIATELY - else if x < min_queue - P.urgency = NEED - P.work_request_size = min_queue - x - else if global_urgency > OK - P.urgency = OK - P.work_request_size = 1 - else - P.urgency = DONT_NEED +P.work_request_size>0 and +P.long_term_debt - time_until_work_done(P) is greatest+and gets work from that project. "; page_tail();