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
[email protected]
u> To
Sent by: [email protected]
<boinc_cvs-bounce cc
[email protected]
u> Subject
boinc_cvs Digest, Vol 71, Issue 48
10/30/2010 03:00
PM
Please respond to
[email protected]
keley.edu
Send boinc_cvs mailing list submissions to
[email protected]
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
[email protected]
You can reach the person managing the list at
[email protected]
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
([email protected])
----------------------------------------------------------------------
Message: 1
Date: Fri, 29 Oct 2010 16:41:35 -0700
From: [email protected]
Subject: [boinc_cvs] r22608 - in trunk/boinc: . api client lib sched
To: [email protected]
Message-ID: <[email protected]>
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
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_cvs
End of boinc_cvs Digest, Vol 71, Issue 48
*****************************************
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.