mirror of https://github.com/BOINC/boinc.git
- client: don't promote multithread jobs ahead of EDF jobs
svn path=/trunk/boinc/; revision=21563
This commit is contained in:
parent
285a41c7a4
commit
5a8142a23c
|
@ -3690,8 +3690,14 @@ Rytis 17 May 2010
|
||||||
prefs_util.inc
|
prefs_util.inc
|
||||||
|
|
||||||
Bernd 18 May 2010
|
Bernd 18 May 2010
|
||||||
fix query in send_old_work()
|
- scheduler: fix query in send_old_work()
|
||||||
from Oliver Bock
|
from Oliver Bock
|
||||||
|
|
||||||
sched/
|
sched/
|
||||||
sched_locality.cpp
|
sched_locality.cpp
|
||||||
|
|
||||||
|
David 18 May 2010
|
||||||
|
- client: don't promote multithread jobs ahead of EDF jobs
|
||||||
|
|
||||||
|
client/
|
||||||
|
cpu_sched.cpp
|
||||||
|
|
|
@ -167,10 +167,22 @@ int ACTIVE_TASK::get_shmem_seg_name() {
|
||||||
//
|
//
|
||||||
if (!boinc_file_exists(init_data_path)) {
|
if (!boinc_file_exists(init_data_path)) {
|
||||||
FILE* f = boinc_fopen(init_data_path, "w");
|
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);
|
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
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -822,6 +822,7 @@ static inline bool in_ordered_scheduled_results(ACTIVE_TASK* atp) {
|
||||||
|
|
||||||
// scan the runnable list, keeping track of CPU usage X.
|
// 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
|
// 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) {
|
static void promote_multi_thread_jobs(vector<RESULT*>& runnable_jobs) {
|
||||||
double cpus_used = 0;
|
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 (cur == runnable_jobs.end()) break;
|
||||||
if (cpus_used >= gstate.ncpus) break;
|
if (cpus_used >= gstate.ncpus) break;
|
||||||
RESULT* rp = *cur;
|
RESULT* rp = *cur;
|
||||||
|
if (rp->rr_sim_misses_deadline) break;
|
||||||
double nc = rp->avp->avg_ncpus;
|
double nc = rp->avp->avg_ncpus;
|
||||||
if (nc > 1) {
|
if (nc > 1) {
|
||||||
if (first_non_mt != runnable_jobs.end()) {
|
if (first_non_mt != runnable_jobs.end()) {
|
||||||
|
|
|
@ -139,6 +139,9 @@ struct COPROC {
|
||||||
for (int i=0; i<MAX_COPROC_INSTANCES; i++) {
|
for (int i=0; i<MAX_COPROC_INSTANCES; i++) {
|
||||||
device_nums[i] = 0;
|
device_nums[i] = 0;
|
||||||
running_graphics_app[i] = true;
|
running_graphics_app[i] = true;
|
||||||
|
available_ram[i] = 0;
|
||||||
|
available_ram_fake[i] = 0;
|
||||||
|
available_ram_unknown[i] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COPROC(const char* t){
|
COPROC(const char* t){
|
||||||
|
|
Loading…
Reference in New Issue