- client: don't promote multithread jobs ahead of EDF jobs

svn path=/trunk/boinc/; revision=21563
This commit is contained in:
David Anderson 2010-05-18 16:45:55 +00:00
parent 285a41c7a4
commit 5a8142a23c
4 changed files with 26 additions and 3 deletions

View File

@ -3690,8 +3690,14 @@ Rytis 17 May 2010
prefs_util.inc
Bernd 18 May 2010
fix query in send_old_work()
- scheduler: fix query in send_old_work()
from Oliver Bock
sched/
sched_locality.cpp
David 18 May 2010
- client: don't promote multithread jobs ahead of EDF jobs
client/
cpu_sched.cpp

View File

@ -167,10 +167,22 @@ int ACTIVE_TASK::get_shmem_seg_name() {
//
if (!boinc_file_exists(init_data_path)) {
FILE* f = boinc_fopen(init_data_path, "w");
if (f) fclose(f);
if (f) {
fclose(f);
} else {
msg_printf(wup->project, MSG_INTERNAL_ERROR,
"error: can't open file for shmem seg name"
);
}
}
shmem_seg_name = ftok(init_data_path, 1);
if (shmem_seg_name == -1) return ERR_SHMEM_NAME;
if (shmem_seg_name == -1) {
msg_printf(wup->project, MSG_INTERNAL_ERROR,
"error: can't open file for shmem seg name: %d", errno
);
perror("ftok");
return ERR_SHMEM_NAME;
}
#endif
return 0;
}

View File

@ -822,6 +822,7 @@ static inline bool in_ordered_scheduled_results(ACTIVE_TASK* atp) {
// scan the runnable list, keeping track of CPU usage X.
// if find a MT job J, and X < ncpus, move J before all non-MT jobs
// But don't promote a MT job ahead of a job in EDF
//
static void promote_multi_thread_jobs(vector<RESULT*>& runnable_jobs) {
double cpus_used = 0;
@ -831,6 +832,7 @@ static void promote_multi_thread_jobs(vector<RESULT*>& runnable_jobs) {
if (cur == runnable_jobs.end()) break;
if (cpus_used >= gstate.ncpus) break;
RESULT* rp = *cur;
if (rp->rr_sim_misses_deadline) break;
double nc = rp->avp->avg_ncpus;
if (nc > 1) {
if (first_non_mt != runnable_jobs.end()) {

View File

@ -139,6 +139,9 @@ struct COPROC {
for (int i=0; i<MAX_COPROC_INSTANCES; i++) {
device_nums[i] = 0;
running_graphics_app[i] = true;
available_ram[i] = 0;
available_ram_fake[i] = 0;
available_ram_unknown[i] = true;
}
}
COPROC(const char* t){