*** empty log message ***

svn path=/trunk/boinc/; revision=3939
This commit is contained in:
Daniel Hsu 2004-07-22 18:56:54 +00:00
parent 6d1da4a7f1
commit fcb2a85388
4 changed files with 19 additions and 5 deletions

View File

@ -15617,3 +15617,11 @@ Rom 22 July 2004
sched/
transitioner.C
Daniel 2004-07-22
- use "estimated_delay" (sent in scheduler request by client) when
trying to meet wu.delay_bound.
sched/
sched_send.C
server_types.C,h

View File

@ -139,7 +139,7 @@ inline double estimate_cpu_duration(WORKUNIT& wu, HOST& host) {
return wu.rsc_fpops_est/host.p_fpops;
}
// estimate the amount of real time for this WU based on active_frac
// estimate the amount of real time for this WU based on active_frac,
// and resource_share_fraction
inline double estimate_wallclock_duration(
WORKUNIT& wu, HOST& host, double resource_share_fraction
@ -153,7 +153,8 @@ inline double estimate_wallclock_duration(
// because of insufficient memory, CPU speed, or resource share
//
bool wu_is_feasible(
WORKUNIT& wu, HOST& host, WORK_REQ& wreq, double resource_share_fraction
WORKUNIT& wu, HOST& host, WORK_REQ& wreq,
double resource_share_fraction, double estimated_delay
) {
double m_nbytes = host.m_nbytes;
if (m_nbytes < MIN_POSSIBLE_RAM) m_nbytes = MIN_POSSIBLE_RAM;
@ -168,8 +169,9 @@ bool wu_is_feasible(
}
if (config.enforce_delay_bound) {
double wu_wallclock_time = estimate_wallclock_duration(wu, host, resource_share_fraction);
int host_remaining_time = 0; // TODO
double wu_wallclock_time =
estimate_wallclock_duration(wu, host, resource_share_fraction);
double host_remaining_time = estimated_delay;
if (host_remaining_time + wu_wallclock_time > wu.delay_bound) {
log_messages.printf(
@ -520,7 +522,8 @@ static void scan_work_array(
//
wu = wu_result.workunit;
if (!wu_is_feasible(
wu, reply.host, wreq, sreq.resource_share_fraction
wu, reply.host, wreq, sreq.resource_share_fraction,
sreq.estimated_delay
)) {
log_messages.printf(
SCHED_MSG_LOG::DEBUG, "[HOST#%d] [WU#%d %s] WU is infeasible\n",

View File

@ -62,6 +62,7 @@ int SCHEDULER_REQUEST::parse(FILE* fin) {
hostid = 0;
work_req_seconds = 0;
resource_share_fraction = 1.0;
estimated_delay = 0;
strcpy(global_prefs_xml, "");
strcpy(projects_xml, "");
strcpy(code_sign_key, "");
@ -91,6 +92,7 @@ int SCHEDULER_REQUEST::parse(FILE* fin) {
else if (parse_int(buf, "<core_client_minor_version>", core_client_minor_version)) continue;
else if (parse_int(buf, "<work_req_seconds>", work_req_seconds)) continue;
else if (parse_double(buf, "<resource_share_fraction>", resource_share_fraction)) continue;
else if (parse_double(buf, "<estimated_delay>", estimated_delay)) continue;
else if (parse_double(buf, "<project_disk_usage>", project_disk_usage)) continue;
else if (parse_double(buf, "<total_disk_usage>", total_disk_usage)) continue;
else if (match_tag(buf, "<global_preferences>")) {

View File

@ -62,6 +62,7 @@ struct SCHEDULER_REQUEST {
int rpc_seqno;
int work_req_seconds;
double resource_share_fraction;
double estimated_delay;
char global_prefs_xml[LARGE_BLOB_SIZE];
char projects_xml[LARGE_BLOB_SIZE];
char code_sign_key[4096];