duration correction factor enhancements

svn path=/trunk/boinc/; revision=9252
This commit is contained in:
David Anderson 2006-01-17 07:30:28 +00:00
parent 4c1ae30489
commit 1bfed5d3cc
6 changed files with 28 additions and 0 deletions

View File

@ -525,3 +525,15 @@ David 16 Jan 2006
client/
acct_mgr.C
David 16 Jan 2006
- core client: enhancements to duration correction factor (DCF):
- on project reset, set DCF to one.
- when do CPU benchmarks, scale all DCFs by new/old benchmark
(from Josef Segur)
client/
client_state.C,h
cs_benchmark.C
cs_scheduler.C

View File

@ -1283,6 +1283,7 @@ int CLIENT_STATE::reset_project(PROJECT* project) {
garbage_collect_always();
}
project->duration_correction_factor = 1;
write_state_file();
return 0;
}

View File

@ -343,6 +343,7 @@ public:
int handle_scheduler_reply(PROJECT*, char* scheduler_url, int& nresults);
int compute_work_requests();
SCHEDULER_OP* scheduler_op;
void scale_duration_correction_factors(double);
private:
bool contacted_sched_server;
int overall_work_fetch_urgency;

View File

@ -364,6 +364,7 @@ bool CLIENT_STATE::cpu_benchmarks_poll() {
}
}
if (ndone == ncpus) {
double old_p_fpops = host_info.p_fpops;
if (had_error) {
msg_printf(NULL, MSG_ERROR, "CPU benchmarks error");
host_info.p_fpops = DEFAULT_FPOPS;
@ -403,6 +404,11 @@ bool CLIENT_STATE::cpu_benchmarks_poll() {
);
#endif
// scale duration correction factor according to change in benchmarks.
//
if (old_p_fpops) {
scale_duration_correction_factors(host_info.p_fpops/old_p_fpops);
}
host_info.p_calculated = now;
benchmarks_running = false;
msg_printf(NULL, MSG_INFO, "Finished CPU benchmarks");

View File

@ -1415,4 +1415,11 @@ double CLIENT_STATE::work_needed_secs() {
return x;
}
void CLIENT_STATE::scale_duration_correction_factors(double factor) {
for (unsigned int i=0; i<projects.size(); i++) {
PROJECT* p = projects[i];
p->duration_correction_factor *= factor;
}
}
const char *BOINC_RCSID_d35a4a7711 = "$Id$";

View File

@ -165,6 +165,7 @@ show_name("Thomas Richard");
show_name("Nikolay Saharov");
show_name("Alex A. dos Santos");
show_name("Steven Schweda");
show_name("Josef W. Segur");
show_name("Jens Seidler");
show_name("Peter Smithson");
show_name("Christian S&oslash;ttrup");