- Manager: if a job is running EDF, show "high priority" in status

- compile fixes for Charlie's next-to-last checkin
    
    client/
        client_state.h
        cpu_sched.C
        sim.h
        sim_util.C
    clientgui/
        ViewWork.cpp
        ViewWorkGrid.cpp

svn path=/trunk/boinc/; revision=13021
This commit is contained in:
David Anderson 2007-06-25 19:05:29 +00:00
parent 7f3d1004dd
commit cdc65cd283
7 changed files with 54 additions and 22 deletions

View File

@ -6695,3 +6695,16 @@ Charlie 25 June 2007
mac_build/
boinc.xcodeproj/
project.pbxproj
David 25 June 2007
- Manager: if a job is running EDF, show "high priority" in status
- compile fixes for Charlie's next-to-last checkin
client/
client_state.h
cpu_sched.C
sim.h
sim_util.C
clientgui/
ViewWork.cpp
ViewWorkGrid.cpp

View File

@ -269,6 +269,9 @@ private:
void print_deadline_misses();
public:
double retry_shmem_time;
// if we fail to start a task due to no shared-mem segments,
// wait until at least this time to try running
// another task that needs a shared-mem seg
inline double work_buf_min() {
return global_prefs.work_buf_min_days * 86400;
}

View File

@ -49,6 +49,7 @@
#include "client_msgs.h"
#include "str_util.h"
#include "util.h"
#include "error_numbers.h"
#include "log_flags.h"
using std::vector;
@ -504,16 +505,16 @@ void CLIENT_STATE::schedule_cpus() {
}
atp->too_large = true;
continue;
} else {
atp->too_large = false;
if (gstate.retry_shmem_time < gstate.now) {
if (atp->app_client_shm.shm == NULL) {
atp->needs_shmem = true;
continue;
}
atp->needs_shmem = false;
}
atp->too_large = false;
// TODO: merge this chunk of code with its clone
if (gstate.retry_shmem_time < gstate.now) {
if (atp->app_client_shm.shm == NULL) {
atp->needs_shmem = true;
continue;
}
atp->needs_shmem = false;
}
ram_left -= atp->procinfo.working_set_size_smoothed;
}
@ -550,16 +551,19 @@ void CLIENT_STATE::schedule_cpus() {
}
atp->too_large = true;
continue;
} else {
atp->too_large = false;
}
if (gstate.retry_shmem_time < gstate.now) {
if (atp->app_client_shm.shm == NULL) {
atp->needs_shmem = true;
continue;
}
atp->needs_shmem = false;
}
atp->too_large = false;
// don't select if it would need a new shared-mem seg
// and we're out of them
//
if (gstate.retry_shmem_time < gstate.now) {
if (atp->app_client_shm.shm == NULL) {
atp->needs_shmem = true;
continue;
}
atp->needs_shmem = false;
}
ram_left -= atp->procinfo.working_set_size_smoothed;
}
double xx = (rp->project->resource_share / rrs) * expected_pay_off;
@ -917,9 +921,11 @@ bool CLIENT_STATE::enforce_schedule() {
atp->scheduler_state == CPU_SCHED_UNINITIALIZED
);
if ((retval == ERR_SHMGET) || (retval == ERR_SHMAT)) {
// Assume no additional shared memory is available for next 10 seconds
// Assume no additional shared memory segs
// will be available in the next 10 seconds
// (run only tasks which are already attached to shared memory).
if (gstate.retry_shmem_time < gstate.now) { // Do this only once
//
if (gstate.retry_shmem_time < gstate.now) {
request_schedule_cpus("no more shared memory");
}
gstate.retry_shmem_time = gstate.now + 10.0;

View File

@ -180,6 +180,7 @@ private:
void make_running_task_heap(vector<ACTIVE_TASK*>&);
void print_deadline_misses();
public:
double retry_shmem_time;
inline double work_buf_min() {
return global_prefs.work_buf_min_days * 86400;
}

View File

@ -45,6 +45,7 @@
CLIENT_STATE::CLIENT_STATE() {
initialized = false;
retry_shmem_time = 0;
}
FILE* boinc_fopen(const char* path, const char* mode) {

View File

@ -796,7 +796,11 @@ wxInt32 CViewWork::FormatStatus(wxInt32 item, wxString& strBuffer) const {
} else if (result->needs_shmem) {
strBuffer = _("Waiting for shared memory");
} else if (result->scheduler_state == CPU_SCHED_SCHEDULED) {
strBuffer = _("Running");
if (result->edf_scheduled) {
strBuffer = _("Running, high priority");
} else {
strBuffer = _("Running");
}
} else if (result->scheduler_state == CPU_SCHED_PREEMPTED) {
strBuffer = _("Waiting to run");
} else if (result->scheduler_state == CPU_SCHED_UNINITIALIZED) {

View File

@ -715,7 +715,11 @@ wxInt32 CViewWorkGrid::FormatStatus(wxInt32 item, wxString& strBuffer) const {
} else if (result->needs_shmem) {
strBuffer = _("Waiting for shared memory");
} else if (result->scheduler_state == CPU_SCHED_SCHEDULED) {
strBuffer = _("Running");
if (result->edf_scheduled) {
strBuffer = _("Running, high priority");
} else {
strBuffer = _("Running");
}
} else if (result->scheduler_state == CPU_SCHED_PREEMPTED) {
strBuffer = _("Waiting to run");
} else if (result->scheduler_state == CPU_SCHED_UNINITIALIZED) {