- client: record the time results are received.

Process non-EDF GPU jobs in this order.


svn path=/trunk/boinc/; revision=18531
This commit is contained in:
David Anderson 2009-06-30 20:22:54 +00:00
parent ed2df38f4e
commit 46d9e8f087
8 changed files with 33 additions and 6 deletions

View File

@ -6118,3 +6118,17 @@ Rom 30 June 2009
lib/
gui_rpc_client.h
gui_rpc_client_ops.cpp
David 30 June 2009
- client: record the time results are received.
Process non-EDF GPU jobs in this order.
client/
client_types.cpp,h
cpu_sched.cpp
cs_scheduler.cpp
clientgui/
DltItemProperties.cpp
lib/
gui_rpc_client_ops.cpp
gui_rpc_client.h

View File

@ -1441,6 +1441,7 @@ void RESULT::clear() {
strcpy(name, "");
strcpy(wu_name, "");
report_deadline = 0;
received_time = 0;
output_files.clear();
_state = RESULT_NEW;
ready_to_report = false;
@ -1518,6 +1519,7 @@ int RESULT::parse_state(MIOFILE& in) {
}
if (parse_str(buf, "<name>", name, sizeof(name))) continue;
if (parse_str(buf, "<wu_name>", wu_name, sizeof(wu_name))) continue;
if (parse_double(buf, "<received_time>", received_time)) continue;
if (parse_double(buf, "<report_deadline>", report_deadline)) {
continue;
}
@ -1643,8 +1645,10 @@ int RESULT::write(MIOFILE& out, bool to_server) {
out.printf(
" <wu_name>%s</wu_name>\n"
" <report_deadline>%f</report_deadline>\n",
" <received_time>%f</received_time>\n",
wu_name,
report_deadline
report_deadline,
received_time
);
for (i=0; i<output_files.size(); i++) {
retval = output_files[i].write(out);

View File

@ -462,6 +462,7 @@ struct WORKUNIT {
struct RESULT {
char name[256];
char wu_name[256];
double received_time; // when we got this from server
double report_deadline;
int version_num; // identifies the app used
char plan_class[64];
@ -474,7 +475,7 @@ struct RESULT {
bool ready_to_report;
/// time when ready_to_report was set
double completed_time;
/// we're received the ack for this result from the server
/// we've received the ack for this result from the server
bool got_server_ack;
double final_cpu_time;
double final_elapsed_time;

View File

@ -254,15 +254,18 @@ RESULT* CLIENT_STATE::largest_debt_project_best_result() {
//
RESULT* first_coproc_result() {
unsigned int i;
RESULT* best = NULL;
for (i=0; i<gstate.results.size(); i++) {
RESULT* rp = gstate.results[i];
if (!rp->runnable()) continue;
if (rp->project->non_cpu_intensive) continue;
if (rp->already_selected) continue;
if (!rp->uses_coprocs()) continue;
return rp;
if (!best || (rp->received_time < best->received_time)) {
best = rp;
}
}
return NULL;
return best;
}
// Return earliest-deadline result.

View File

@ -811,6 +811,7 @@ int CLIENT_STATE::handle_scheduler_reply(PROJECT* project, char* scheduler_url)
continue;
}
rp->wup->version_num = rp->version_num;
rp->received_time = now;
results.push_back(rp);
new_results.push_back(rp);
rp->set_state(RESULT_NEW, "handle_scheduler_reply");

View File

@ -167,6 +167,8 @@ void CDlgItemProperties::renderInfos(RESULT* result) {
addProperty(_("Application"), FormatApplicationName(result));
addProperty(_("Workunit name"),wxString(result->wu_name.c_str(),wxConvUTF8));
addProperty(_("State"), FormatStatus(result));
dt.Set((time_t)result->received_time);
addProperty(_("Received"), dt.Format());
dt.Set((time_t)result->report_deadline);
addProperty(_("Report deadline"), dt.Format());
if (result->resources.size()) {

View File

@ -220,7 +220,8 @@ public:
std::string project_url;
int version_num;
std::string plan_class;
int report_deadline;
double report_deadline;
double received_time;
bool ready_to_report;
bool got_server_ack;
double final_cpu_time;

View File

@ -421,7 +421,8 @@ int RESULT::parse(MIOFILE& in) {
if (parse_int(buf, "<version_num>", version_num)) continue;
if (parse_str(buf, "<plan_class>", plan_class)) continue;
if (parse_str(buf, "<project_url>", project_url)) continue;
if (parse_int(buf, "<report_deadline>", report_deadline)) continue;
if (parse_double(buf, "<report_deadline>", report_deadline)) continue;
if (parse_double(buf, "<received_time>", received_time)) continue;
if (parse_bool(buf, "ready_to_report", ready_to_report)) continue;
if (parse_bool(buf, "got_server_ack", got_server_ack)) continue;
if (parse_bool(buf, "suspended_via_gui", suspended_via_gui)) continue;