diff --git a/checkin_notes b/checkin_notes index 6782483372..67bffb0cf8 100644 --- a/checkin_notes +++ b/checkin_notes @@ -5781,3 +5781,13 @@ David 27 Aug 2012 html/ops/ db_update.php +David 28 Aug 2012 + - scheduler: improved log messages for limited locality scheduling + + sched/ + sched_send.cpp + transitioner.cpp + sched_shmem.h + sched_array.cpp + lib/ + str_util.cpp diff --git a/lib/str_util.cpp b/lib/str_util.cpp index b8e5d20384..02fba8b7e1 100644 --- a/lib/str_util.cpp +++ b/lib/str_util.cpp @@ -607,7 +607,7 @@ const char* suspend_reason_string(int reason) { case SUSPEND_REASON_INITIAL_DELAY: return "initial delay"; case SUSPEND_REASON_EXCLUSIVE_APP_RUNNING: return "an exclusive app is running"; case SUSPEND_REASON_CPU_USAGE: return "CPU is busy"; - case SUSPEND_REASON_NETWORK_QUOTA_EXCEEDED: return "network bandwidth limit exceeded"; + case SUSPEND_REASON_NETWORK_QUOTA_EXCEEDED: return "network transfer limit exceeded"; case SUSPEND_REASON_OS: return "requested by operating system"; case SUSPEND_REASON_WIFI_STATE: return "device is not on wifi"; } diff --git a/sched/sched_array.cpp b/sched/sched_array.cpp index ff7342b24f..45b2dbd112 100644 --- a/sched/sched_array.cpp +++ b/sched/sched_array.cpp @@ -122,12 +122,14 @@ static bool quick_check( // if (g_wreq->locality_sched_lite) { if (app->locality_scheduling == LOCALITY_SCHED_LITE) { - if (nfiles_on_host(wu_result.workunit) == 0) { - if (config.debug_array) { - log_messages.printf(MSG_NORMAL, - "[array] no files on host\n" - ); - } + int n = nfiles_on_host(wu_result.workunit); + if (config.debug_array) { + log_messages.printf(MSG_NORMAL, + "[array] job %s: %d files on host\n", + wu_result.workunit.name, n + ); + } + if (n == 0) { return false; } } @@ -469,6 +471,11 @@ void send_work_old() { // if (g_wreq->has_reliable_version) { g_wreq->reliable_only = true; + if (config.debug_send) { + log_messages.printf(MSG_NORMAL, + "[send] scanning for jobs that need reliable host\n" + ); + } if (scan_work_array()) return; g_wreq->reliable_only = false; g_wreq->best_app_versions.clear(); @@ -482,8 +489,7 @@ void send_work_old() { g_wreq->beta_only = true; if (config.debug_send) { log_messages.printf(MSG_NORMAL, - "[send] [HOST#%d] will accept beta work. Scanning for beta work.\n", - g_reply->host.id + "[send] host will accept beta jobs. Scanning for them.\n" ); } if (scan_work_array()) return; @@ -493,18 +499,35 @@ void send_work_old() { // give next priority to results that were infeasible for some other host // g_wreq->infeasible_only = true; + if (config.debug_send) { + log_messages.printf(MSG_NORMAL, + "[send] Scanning for jobs that were infeasible for another host.\n" + ); + } if (scan_work_array()) return; g_wreq->infeasible_only = false; // if some app uses locality sched lite, // make a pass accepting only jobs for which the client has a file // - g_wreq->locality_sched_lite = true; - if (scan_work_array()) return; - g_wreq->locality_sched_lite = false; + if (ssp->locality_sched_lite) { + if (config.debug_send) { + log_messages.printf(MSG_NORMAL, + "[send] Scanning for locality sched Lite jobs.\n" + ); + } + g_wreq->locality_sched_lite = true; + if (scan_work_array()) return; + g_wreq->locality_sched_lite = false; + } // end of high-priority cases. Now do general scan. // + if (config.debug_send) { + log_messages.printf(MSG_NORMAL, + "[send] doing general job scan.\n" + ); + } if (scan_work_array()) return; // If user has selected apps but will accept any, @@ -515,8 +538,7 @@ void send_work_old() { preferred_app_message_index = g_wreq->no_work_messages.size(); if (config.debug_send) { log_messages.printf(MSG_NORMAL, - "[send] [HOST#%d] is looking for work from a non-preferred application\n", - g_reply->host.id + "[send] scanning for jobs from non-preferred applications\n" ); } scan_work_array(); diff --git a/sched/sched_send.cpp b/sched/sched_send.cpp index 1a5e6d9625..c760b02735 100644 --- a/sched/sched_send.cpp +++ b/sched/sched_send.cpp @@ -111,6 +111,9 @@ void add_job_files_to_host(WORKUNIT& wu) { if (retval) continue; if (!fi.sticky) continue; if (!file_present_on_host(fi.name)) { + log_messages.printf(MSG_NORMAL, + "Adding file %s to host file list\n", fi.name + ); g_request->file_infos.push_back(fi); } } diff --git a/sched/sched_shmem.h b/sched/sched_shmem.h index afe0a50657..c96acfe61e 100644 --- a/sched/sched_shmem.h +++ b/sched/sched_shmem.h @@ -89,7 +89,7 @@ struct SCHED_SHMEM { int max_app_versions; int max_assignments; int max_wu_results; - bool locality_sched_lite; + bool locality_sched_lite; // some app uses locality sched Lite bool have_apps_for_proc_type[NPROC_TYPES]; PERF_INFO perf_info; PLATFORM platforms[MAX_PLATFORMS]; diff --git a/sched/transitioner.cpp b/sched/transitioner.cpp index 9037553647..0e55cee168 100644 --- a/sched/transitioner.cpp +++ b/sched/transitioner.cpp @@ -632,7 +632,7 @@ int handle_wu( if (deferred_file_delete_time && deferred_file_delete_time < wu_item.transition_time ) { - wu_item.transition_time = deferred_file_delete_time; + wu_item.transition_time = (int)deferred_file_delete_time; } // Handle transitioner overload.