client: remove code that avoids overcommitting CPUs if MT jobs present.

This can lead to starving the CPUs if there are both GPU and MT jobs.
The basic problem is that a host with GPUs will never have all its CPUs
available for MT jobs.
It should probably advertise fewer CPUs, or something.
This commit is contained in:
David Anderson 2013-06-17 08:48:05 -07:00
parent 3ea6711d06
commit dddf586532
1 changed files with 0 additions and 20 deletions

View File

@ -1591,7 +1591,6 @@ bool CLIENT_STATE::enforce_run_list(vector<RESULT*>& run_list) {
// and prune those that can't be assigned
//
assign_coprocs(run_list);
bool scheduled_mt = false;
// prune jobs that don't fit in RAM or that exceed CPU usage limits.
// Mark the rest as SCHEDULED
@ -1638,22 +1637,6 @@ bool CLIENT_STATE::enforce_run_list(vector<RESULT*>& run_list) {
}
}
// Don't overcommit CPUs if a MT job is scheduled.
// Skip this check for GPU jobs.
//
if (!rp->uses_coprocs()
&& (scheduled_mt || (rp->avp->avg_ncpus > 1))
&& (ncpus_used + rp->avp->avg_ncpus > ncpus)
) {
if (log_flags.cpu_sched_debug) {
msg_printf(rp->project, MSG_INFO,
"[cpu_sched_debug] avoid MT overcommit: skipping %s",
rp->name
);
}
continue;
}
double wss = 0;
if (atp) {
atp->too_large = false;
@ -1686,9 +1669,6 @@ bool CLIENT_STATE::enforce_run_list(vector<RESULT*>& run_list) {
atp = get_task(rp);
}
if (rp->avp->avg_ncpus > 1) {
scheduled_mt = true;
}
ncpus_used += rp->avp->avg_ncpus;
atp->next_scheduler_state = CPU_SCHED_SCHEDULED;
ram_left -= wss;