mirror of https://github.com/BOINC/boinc.git
parent
ad84d2dbaa
commit
5b39ce7f39
|
@ -3548,3 +3548,18 @@ David 4 Apr 2006
|
|||
|
||||
html/ops/
|
||||
db_cleanse.php
|
||||
|
||||
David 4 Apr 2006
|
||||
- core client: define a result's "computation deadline":
|
||||
it's report deadline minus network connect period
|
||||
and minus cpu scheduling period.
|
||||
Use this, rather than report deadline, in CPU scheduling.
|
||||
- take network connect period into account in deciding
|
||||
when results have to be reported
|
||||
|
||||
(from John McLeod)
|
||||
|
||||
client/
|
||||
client_types.C,h
|
||||
cpu_sched.C
|
||||
cs_scheduler.C
|
||||
|
|
|
@ -1230,6 +1230,20 @@ void RESULT::clear() {
|
|||
project = NULL;
|
||||
}
|
||||
|
||||
// Results must be complete early enough to report before the report deadline.
|
||||
// Not all hosts are connected all of the time.
|
||||
//
|
||||
double RESULT::computation_deadline() {
|
||||
return report_deadline - (
|
||||
gstate.global_prefs.work_buf_min_days * SECONDS_PER_DAY
|
||||
// Seconds that the host will not be connected to the Internet
|
||||
+ gstate.global_prefs.cpu_scheduling_period_minutes * 60
|
||||
// Seconds that the CPU may be busy with some other result
|
||||
+ SECONDS_PER_DAY
|
||||
// Deadline cusion
|
||||
);
|
||||
}
|
||||
|
||||
// parse a <result> element from scheduling server.
|
||||
//
|
||||
int RESULT::parse_server(MIOFILE& in) {
|
||||
|
|
|
@ -464,6 +464,7 @@ struct RESULT {
|
|||
bool already_selected;
|
||||
// used to keep cpu scheduler from scheduling a result twice
|
||||
// transient; used only within schedule_cpus()
|
||||
double computation_deadline();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -530,7 +530,7 @@ bool CLIENT_STATE::rr_misses_deadline(double per_cpu_proc_rate, double rrs) {
|
|||
|
||||
// "rpbest" is first result to finish. Does it miss its deadline?
|
||||
//
|
||||
double diff = sim_now + rpbest->rrsim_finish_delay - rpbest->report_deadline;
|
||||
double diff = sim_now + rpbest->rrsim_finish_delay - rpbest->computation_deadline();
|
||||
if (diff > 0) {
|
||||
scope_messages.printf(
|
||||
"rr_sim: result %s misses deadline by %f\n", rpbest->name, diff
|
||||
|
|
|
@ -447,13 +447,17 @@ PROJECT* CLIENT_STATE::find_project_with_overdue_results() {
|
|||
if (have_sporadic_connection) {
|
||||
return p;
|
||||
}
|
||||
if (gstate.now > r->report_deadline - REPORT_DEADLINE_CUSHION) {
|
||||
double cushion = std::max(
|
||||
(double)REPORT_DEADLINE_CUSHION,
|
||||
global_prefs.work_buf_min_days * SECONDS_PER_DAY
|
||||
);
|
||||
if (gstate.now > r->report_deadline - cushion) {
|
||||
return p;
|
||||
}
|
||||
if (gstate.now > r->completed_time + global_prefs.work_buf_min_days*SECONDS_PER_DAY) {
|
||||
return p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue