*** empty log message ***

svn path=/trunk/boinc/; revision=10445
This commit is contained in:
David Anderson 2006-06-21 23:16:46 +00:00
parent 9d12b889e0
commit ddc76d9587
6 changed files with 44 additions and 15 deletions

View File

@ -6544,3 +6544,10 @@ David 21 June 2006
cs_scheduler.C
log_flags.C,h
time_stats.C
David 21 June 2006
- core client: add some logging messages to rr_simulation()
client/
cpu_sched.C
cs_scheduler.C

View File

@ -278,7 +278,7 @@ void CLIENT_STATE::adjust_debts() {
p->anticipated_debt = 0;
}
scope_messages.printf(
"CLIENT_STATE::adjust_debts(): project %s: short-term debt %f\n",
"adjust_debts(): project %s: short-term debt %f\n",
p->project_name, p->short_term_debt
);
}
@ -395,7 +395,7 @@ void CLIENT_STATE::schedule_cpus() {
// do round-robin simulation to find what results miss deadline,
//
scope_messages.printf("rr_sim: calling from cpu_scheduler");
scope_messages.printf("rr_simulation: calling from cpu_scheduler\n");
rr_simulation(avg_proc_rate()/ncpus, runnable_resource_share());
if (log_flags.cpu_sched_debug) {
print_deadline_misses();
@ -735,6 +735,8 @@ bool CLIENT_STATE::rr_simulation(double per_cpu_proc_rate, double rrs) {
SCOPE_MSG_LOG scope_messages(log_messages, CLIENT_MSG_LOG::DEBUG_CPU_SCHED);
scope_messages.printf( "rr_simulation: start\n");
// Initialize the "active" and "pending" lists for each project.
// These keep track of that project's results
//
@ -791,7 +793,8 @@ bool CLIENT_STATE::rr_simulation(double per_cpu_proc_rate, double rrs) {
double diff = sim_now + rpbest->rrsim_finish_delay - rpbest->computation_deadline();
if (diff > 0) {
scope_messages.printf(
"rr_sim: result %s misses deadline by %f\n", rpbest->name, diff
"rr_simulation: result %s misses deadline by %f\n",
rpbest->name, diff
);
rpbest->rr_sim_misses_deadline = true;
pbest->rr_sim_deadlines_missed++;
@ -867,8 +870,19 @@ bool CLIENT_STATE::rr_simulation(double per_cpu_proc_rate, double rrs) {
sim_now += rpbest->rrsim_finish_delay;
}
if (!rval) {
scope_messages.printf( "rr_sim: deadlines met\n");
if (log_flags.cpu_sched_debug) {
for (i=0; i<projects.size(); i++) {
p = projects[i];
msg_printf(NULL, MSG_INFO,
"rr_simulation: shortfall for %s is %f\n",
p->project_name, p->cpu_shortfall
);
}
msg_printf(NULL, MSG_INFO,
"rr_simulation: end; returning %s; cpu_shortfall %f\n",
rval?"true":"false",
cpu_shortfall
);
}
return rval;
}

View File

@ -612,13 +612,13 @@ int CLIENT_STATE::compute_work_requests() {
if (estimated_time_to_starvation < work_min_period) {
if (estimated_time_to_starvation == 0) {
scope_messages.printf(
"CLIENT_STATE::compute_work_requests(): project '%s' is starved\n",
"compute_work_requests(): project '%s' is starved\n",
p->project_name
);
p->work_request_urgency = WORK_FETCH_NEED_IMMEDIATELY;
} else {
scope_messages.printf(
"CLIENT_STATE::compute_work_requests(): project '%s' will starve in %.2f sec\n",
"compute_work_requests(): project '%s' will starve in %.2f sec\n",
p->project_name, estimated_time_to_starvation
);
p->work_request_urgency = WORK_FETCH_NEED;
@ -640,13 +640,13 @@ int CLIENT_STATE::compute_work_requests() {
}
scope_messages.printf(
"CLIENT_STATE::compute_work_requests(): project %s work req: %f sec urgency: %d\n",
"compute_work_requests(): project %s work req: %f sec urgency: %d\n",
p->project_name, p->work_request, p->work_request_urgency
);
}
scope_messages.printf(
"CLIENT_STATE::compute_work_requests(): client work need: %f sec, urgency %d\n",
"compute_work_requests(): client work need: %f sec, urgency %d\n",
global_work_need, overall_work_fetch_urgency
);
@ -1034,7 +1034,7 @@ int CLIENT_STATE::handle_scheduler_reply(
for (i=0; i<sr.result_acks.size(); i++) {
RESULT* rp = lookup_result(project, sr.result_acks[i].name);
scope_messages.printf(
"CLIENT_STATE::handle_scheduler_reply(): got ack for result %s\n",
"handle_scheduler_reply(): got ack for result %s\n",
sr.result_acks[i].name
);
if (rp) {
@ -1116,7 +1116,7 @@ int CLIENT_STATE::handle_scheduler_reply(
}
set_client_state_dirty("handle_scheduler_reply");
scope_messages.printf("CLIENT_STATE::handle_scheduler_reply(): State after handle_scheduler_reply():\n");
scope_messages.printf("handle_scheduler_reply(): State after handle_scheduler_reply():\n");
print_summary();
return 0;
}
@ -1154,7 +1154,7 @@ void CLIENT_STATE::set_work_fetch_mode() {
SCOPE_MSG_LOG scope_messages(log_messages, CLIENT_MSG_LOG::DEBUG_CPU_SCHED);
scope_messages.printf("rr_sim: calling from work_fetch");
scope_messages.printf("rr_simulation: calling from work_fetch\n");
if (rr_simulation(per_cpu_proc_rate, rrs)) {
if (!no_work_for_a_cpu()) {
should_not_fetch_work = true;
@ -1163,7 +1163,7 @@ void CLIENT_STATE::set_work_fetch_mode() {
// if fetching more work would cause round-robin to
// miss a deadline, don't fetch more work
//
scope_messages.printf("rr_sim: calling from work_fetch with extended rrs");
scope_messages.printf("rr_simulation: calling from work_fetch with extended rrs\n");
PROJECT* p = next_project_need_work();
if (p && !p->runnable()) {
rrs += p->resource_share;

View File

@ -1,6 +1,10 @@
<?
$project_news = array(
array("June 21, 2006",
"BOINCstats and the BAM! account manager
are now available <a href=http://jp.boincstats.com>in Japanese</a>."
),
array("June 15, 2006",
"BOINC's CPU scheduler has become smarter:
it now waits until an application has checkpointed

View File

@ -9,6 +9,7 @@ This file has the following format:
<cc_config>
[ <save_stats_days>N</save_stats_days> ]
[ <dont_check_file_size>0|1</dont_check_file_size> ]
[ <ncpus>N</ncpus> ]
<log_flags>
[ flags ]
</log_flags>
@ -24,6 +25,9 @@ list_item_func("<save_stats_days>",
list_item_func("<dont_check_file_sizes>",
"If nonzero, don't check file sizes"
);
list_item_func("<ncpus>",
"Act as if there were N CPUs (for debugging)."
);
list_end();
echo "
The core client generates messages:

View File

@ -270,7 +270,7 @@ Tiebreaker: least index in result array.
<li> Find the project P with the greatest anticipated debt,
select one of P's runnable results
(picking one that is already running, if possible,
else the result with earliest deadline)
else the one received first from the project)
and schedule that result.
<li> Decrement P's anticipated debt by the 'expected payoff'
(the scheduling period divided by NCPUS).