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 @@ 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.

Work-fetch policy

-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: -

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();