I checked in a fix for 1). Does 2) happen with 6.12? If not, let's just wait for 6.12.
-- David On 01-Nov-2010 7:18 AM, Richard Haselgrove wrote: > I agree with John - this is a major change, and will need extensive testing. > > David, may I ask what your current expectation is for the timeline for the > new scheduler? Specifically, are you going to attempt to incorporate it into > v6.12, or would it be better to get all the 'notices' angst out of the way > via a public release (and debug if necessary after BETA testing byt the > public at large) first, and then we can concentrate all resources on > functionality? > > I'm concerned that there seem to be a couple of recently-reported issues > which might slip through the cracks. > > 1) In v6.12.4, the thrashing of GPU tasks into and out of GPU memory, > because there seems to be no 'Task Switch Interval' inhibition on the new > GPU scheduling by debt. > > 2) In v6.10.58, the idle CPUs apparently caused by the scheduler incorrectly > handling the triple mixture of High Priority CPU / Multithread / ordinary > priority single CPU tasks. > (from http://boinc.berkeley.edu/dev/forum_thread.php?id=6138) > > If the new scheduler is going to be put into v6.12 (which will inevitably > delay that release a bit), could those fixes (when ready) be backported into > v6.10, please? > > Or if the new scheduler has to wait for v6.14, perhaps we should concentrate > on getting v6.12 finished first? > > > >> 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 >> >> >> 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. >> > > > _______________________________________________ > 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. _______________________________________________ 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.