This needs to be tested thoroughly with some very long term simulations
involving several years of simulation time.  Anything that involves the
concept of recent for work fetch will break resource share over the long
term when used in conjunction with CPDN.

jm7


                                                                           
             <boinc_cvs-reques                                             
             t...@ssl.berkeley.ed                                             
             u>                                                         To 
             Sent by:                  boinc_...@ssl.berkeley.edu          
             <boinc_cvs-bounce                                          cc 
             s...@ssl.berkeley.ed                                             
             u>                                                    Subject 
                                       boinc_cvs Digest, Vol 71, Issue 48  
                                                                           
             10/30/2010 03:00                                              
             PM                                                            
                                                                           
                                                                           
             Please respond to                                             
             boinc_...@ssl.ber                                             
                 keley.edu                                                 
                                                                           
                                                                           




Send boinc_cvs mailing list submissions to
             boinc_...@ssl.berkeley.edu

To subscribe or unsubscribe via the World Wide Web, visit
             http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_cvs
or, via email, send a message with subject or body 'help' to
             boinc_cvs-requ...@ssl.berkeley.edu

You can reach the person managing the list at
             boinc_cvs-ow...@ssl.berkeley.edu

When replying, please edit your Subject line so it is more specific
than "Re: Contents of boinc_cvs digest..."


Today's Topics:

   1. r22608 - in trunk/boinc: . api client lib sched
      (boinc...@ssl.berkeley.edu)


----------------------------------------------------------------------

Message: 1
Date: Fri, 29 Oct 2010 16:41:35 -0700
From: boinc...@ssl.berkeley.edu
Subject: [boinc_cvs] r22608 - in trunk/boinc: . api client lib sched
To: boinc_...@ssl.berkeley.edu
Message-ID: <201010292341.o9tnfzuh013...@mail.ssl.berkeley.edu>
Content-Type: text/plain; charset=UTF-8

Author: davea
Date: 2010-10-29 16:41:34 -0700 (Fri, 29 Oct 2010)
New Revision: 22608

Modified:
   trunk/boinc/api/boinc_api.cpp
   trunk/boinc/checkin_notes
   trunk/boinc/client/client_types.cpp
   trunk/boinc/client/cpu_sched.cpp
   trunk/boinc/client/net_stats.cpp
   trunk/boinc/client/work_fetch.h
   trunk/boinc/lib/util.cpp
   trunk/boinc/lib/util.h
   trunk/boinc/sched/credit.cpp
   trunk/boinc/sched/update_stats.cpp
Log:
- client: small initial checkin for new scheduling system.
    Keep track of per-project recent estimated credit


Modified: trunk/boinc/api/boinc_api.cpp
===================================================================
--- trunk/boinc/api/boinc_api.cpp          2010-10-29 18:58:26 UTC (rev
22607)
+++ trunk/boinc/api/boinc_api.cpp          2010-10-29 23:41:34 UTC (rev
22608)
@@ -835,9 +835,9 @@
 #else
         strcpy(abspath, path);
 #endif
-        argv[0] = GRAPHICS_APP_FILENAME;
+        argv[0] = (char*)GRAPHICS_APP_FILENAME;
         if (fullscreen) {
-            argv[1] = "--fullscreen";
+            argv[1] = (char*)"--fullscreen";
             argv[2] = 0;
             argc = 2;
         } else {

Modified: trunk/boinc/checkin_notes
===================================================================
--- trunk/boinc/checkin_notes        2010-10-29 18:58:26 UTC (rev 22607)
+++ trunk/boinc/checkin_notes        2010-10-29 23:41:34 UTC (rev 22608)
@@ -7660,3 +7660,20 @@
                         client_msgs.cpp
             clientgui/
                         NoticeListCtrl.cpp
+
+David  29 Oct 2010
+    - client: small initial checkin for new scheduling system.
+        Keep track of per-project recent estimated credit
+
+    api/
+        boinc_api.cpp
+    client/
+        client_types.cpp
+        cpu_sched.cpp
+        net_stats.cpp
+        work_fetch.h
+    lib/
+        util.cpp,h
+    sched/
+        credit.cpp
+        update_stats.cpp

Modified: trunk/boinc/client/client_types.cpp
===================================================================
--- trunk/boinc/client/client_types.cpp          2010-10-29 18:58:26 UTC
(rev 22607)
+++ trunk/boinc/client/client_types.cpp          2010-10-29 23:41:34 UTC
(rev 22608)
@@ -202,6 +202,8 @@
         if (parse_bool(buf, "dont_request_more_work",
dont_request_more_work)) continue;
         if (parse_bool(buf, "detach_when_done", detach_when_done))
continue;
         if (parse_bool(buf, "ended", ended)) continue;
+        if (parse_double(buf, "<rec>", pwf.rec)) continue;
+        if (parse_double(buf, "<rec_time>", pwf.rec_time)) continue;
         if (parse_double(buf, "<short_term_debt>",
cpu_pwf.short_term_debt)) continue;
         if (parse_double(buf, "<long_term_debt>", cpu_pwf.long_term_debt))
continue;
         if (parse_double(buf, "<cpu_backoff_interval>",
cpu_pwf.backoff_interval)) continue;
@@ -275,6 +277,8 @@
         "    <master_fetch_failures>%d</master_fetch_failures>\n"
         "    <min_rpc_time>%f</min_rpc_time>\n"
         "    <next_rpc_time>%f</next_rpc_time>\n"
+        "    <rec>%f</rec>\n"
+        "    <rec_time>%f</rec_time>\n"
         "    <short_term_debt>%f</short_term_debt>\n"
         "    <long_term_debt>%f</long_term_debt>\n"
         "    <cpu_backoff_interval>%f</cpu_backoff_interval>\n"
@@ -314,6 +318,8 @@
         master_fetch_failures,
         min_rpc_time,
         next_rpc_time,
+        pwf.rec,
+        pwf.rec_time,
         cpu_pwf.short_term_debt,
         cpu_pwf.long_term_debt, cpu_pwf.backoff_interval,
cpu_pwf.backoff_time,
         cuda_pwf.short_term_debt, cuda_pwf.long_term_debt,

Modified: trunk/boinc/client/cpu_sched.cpp
===================================================================
--- trunk/boinc/client/cpu_sched.cpp             2010-10-29 18:58:26 UTC
(rev 22607)
+++ trunk/boinc/client/cpu_sched.cpp             2010-10-29 23:41:34 UTC
(rev 22608)
@@ -514,6 +514,33 @@
     debt_interval_start = now;
 }

+#define REC_HALF_LIFE (30*86400)
+
+// update REC (recent estimated credit)
+//
+static void update_rec() {
+    double f = gstate.host_info.p_fpops;
+
+    for (unsigned int i=0; i<gstate.projects.size(); i++) {
+        PROJECT* p = gstate.projects[i];
+        double x = p->cpu_pwf.secs_this_debt_interval * f;
+        if (gstate.host_info.have_cuda()) {
+            x += p->cuda_pwf.secs_this_debt_interval * f *
cuda_work_fetch.relative_speed;
+        }
+        if (gstate.host_info.have_ati()) {
+            x += p->ati_pwf.secs_this_debt_interval * f *
ati_work_fetch.relative_speed;
+        }
+        update_average(
+            gstate.now,
+            gstate.debt_interval_start,
+            x,
+            REC_HALF_LIFE,
+            p->pwf.rec,
+            p->pwf.rec_time
+        );
+    }
+}
+
 // adjust project debts (short, long-term)
 //
 void CLIENT_STATE::adjust_debts() {
@@ -551,6 +578,8 @@
         work_fetch.accumulate_inst_sec(atp, elapsed_time);
     }

+    update_rec();
+
     cpu_work_fetch.update_long_term_debts();
     cpu_work_fetch.update_short_term_debts();
     if (host_info.have_cuda()) {

Modified: trunk/boinc/client/net_stats.cpp
===================================================================
--- trunk/boinc/client/net_stats.cpp             2010-10-29 18:58:26 UTC
(rev 22607)
+++ trunk/boinc/client/net_stats.cpp             2010-10-29 23:41:34 UTC
(rev 22608)
@@ -71,6 +71,7 @@
     }
     double start_time = gstate.now - dt;
     update_average(
+        gstate.now,
         start_time,
         nbytes,
         NET_RATE_HALF_LIFE,

Modified: trunk/boinc/client/work_fetch.h
===================================================================
--- trunk/boinc/client/work_fetch.h        2010-10-29 18:58:26 UTC (rev
22607)
+++ trunk/boinc/client/work_fetch.h        2010-10-29 23:41:34 UTC (rev
22608)
@@ -237,6 +237,10 @@
     bool can_fetch_work;
     bool compute_can_fetch_work(PROJECT*);
     bool has_runnable_jobs;
+    double rec;
+        // recent estimated credit
+    double rec_time;
+        // when it was last updated
     PROJECT_WORK_FETCH() {
         memset(this, 0, sizeof(*this));
     }

Modified: trunk/boinc/lib/util.cpp
===================================================================
--- trunk/boinc/lib/util.cpp         2010-10-29 18:58:26 UTC (rev 22607)
+++ trunk/boinc/lib/util.cpp         2010-10-29 23:41:34 UTC (rev 22608)
@@ -234,6 +234,7 @@
 // html/inc/credit.inc
 //
 void update_average(
+    double now,
     double work_start_time,       // when new work was started
                                     // (or zero if no new work)
     double work,                    // amount of new work
@@ -241,8 +242,6 @@
     double& avg,                    // average work per day (in and out)
     double& avg_time                // when average was last computed
 ) {
-    double now = dtime();
-
     if (avg_time) {
         // If an average R already exists, imagine that the new work was
done
         // entirely between avg_time and now.

Modified: trunk/boinc/lib/util.h
===================================================================
--- trunk/boinc/lib/util.h           2010-10-29 18:58:26 UTC (rev 22607)
+++ trunk/boinc/lib/util.h           2010-10-29 23:41:34 UTC (rev 22608)
@@ -61,7 +61,7 @@
 extern double linux_cpu_time(int pid);
 #endif

-extern void update_average(double, double, double, double&, double&);
+extern void update_average(double, double, double, double, double&,
double&);

 extern int boinc_calling_thread_cpu_time(double&);


Modified: trunk/boinc/sched/credit.cpp
===================================================================
--- trunk/boinc/sched/credit.cpp           2010-10-29 18:58:26 UTC (rev
22607)
+++ trunk/boinc/sched/credit.cpp           2010-10-29 23:41:34 UTC (rev
22608)
@@ -55,10 +55,12 @@
     DB_TEAM team;
     int retval;
     char buf[256];
+    double now = dtime();

     // first, process the host

     update_average(
+        now,
         start_time, credit, CREDIT_HALF_LIFE,
         host.expavg_credit, host.expavg_time
     );
@@ -76,6 +78,7 @@
     }

     update_average(
+        now,
         start_time, credit, CREDIT_HALF_LIFE,
         user.expavg_credit, user.expavg_time
     );
@@ -103,6 +106,7 @@
             return retval;
         }
         update_average(
+            now,
             start_time, credit, CREDIT_HALF_LIFE,
             team.expavg_credit, team.expavg_time
         );
@@ -799,6 +803,7 @@
 int write_modified_app_versions(vector<DB_APP_VERSION>& app_versions) {
     unsigned int i, j;
     int retval = 0;
+    double now = dtime();

     if (config.debug_credit && app_versions.size()) {
         log_messages.printf(MSG_NORMAL,
@@ -827,6 +832,7 @@
             }
             for (j=0; j<av.credit_samples.size(); j++) {
                 update_average(
+                    now,
                     av.credit_times[j], av.credit_samples[j],
CREDIT_HALF_LIFE,
                     av.expavg_credit, av.expavg_time
                 );

Modified: trunk/boinc/sched/update_stats.cpp
===================================================================
--- trunk/boinc/sched/update_stats.cpp           2010-10-29 18:58:26 UTC
(rev 22607)
+++ trunk/boinc/sched/update_stats.cpp           2010-10-29 23:41:34 UTC
(rev 22608)
@@ -54,6 +54,7 @@
     DB_USER user;
     int retval;
     char buf[256];
+    double now = dtime();

     while (1) {
         retval = user.enumerate("where expavg_credit>0.1");
@@ -66,7 +67,9 @@
         }

         if (user.expavg_time > update_time_cutoff) continue;
-        update_average(0, 0, CREDIT_HALF_LIFE, user.expavg_credit,
user.expavg_time);
+        update_average(
+            now, 0, 0, CREDIT_HALF_LIFE, user.expavg_credit,
user.expavg_time
+        );
         sprintf( buf, "expavg_credit=%f, expavg_time=%f",
             user.expavg_credit, user.expavg_time
         );
@@ -84,6 +87,7 @@
     DB_HOST host;
     int retval;
     char buf[256];
+    double now = dtime();

     while (1) {
         retval = host.enumerate("where expavg_credit>0.1");
@@ -96,7 +100,9 @@
         }

         if (host.expavg_time > update_time_cutoff) continue;
-        update_average(0, 0, CREDIT_HALF_LIFE, host.expavg_credit,
host.expavg_time);
+        update_average(
+            now, 0, 0, CREDIT_HALF_LIFE, host.expavg_credit,
host.expavg_time
+        );
         sprintf(
             buf,"expavg_credit=%f, expavg_time=%f",
             host.expavg_credit, host.expavg_time
@@ -142,6 +148,7 @@
     DB_TEAM team;
     int retval;
     char buf[256];
+    double now = dtime();

     while (1) {
         retval = team.enumerate("where expavg_credit>0.1");
@@ -163,7 +170,10 @@
             continue;
         }
         if (team.expavg_time < update_time_cutoff) {
-            update_average(0, 0, CREDIT_HALF_LIFE, team.expavg_credit,
team.expavg_time);
+            update_average(
+                now, 0, 0, CREDIT_HALF_LIFE, team.expavg_credit,
+                team.expavg_time
+            );
         }
         sprintf(
             buf, "expavg_credit=%f, expavg_time=%f, nusers=%d",



------------------------------

_______________________________________________
boinc_cvs mailing list
boinc_...@ssl.berkeley.edu
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_cvs


End of boinc_cvs Digest, Vol 71, Issue 48
*****************************************



_______________________________________________
boinc_dev mailing list
boinc_dev@ssl.berkeley.edu
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to