From cc13f2ee6f89f1c27468772f4eeec18443e689e5 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 13 Sep 2012 17:38:55 +0000 Subject: [PATCH] - scheduler: fix logic error limited locality scheduling. In LLS array pass, skip file-on-host check if host doesn't have any sticky files. TODO: it should actually be "any sticky files for this app". But we currently don't have any way to know that. svn path=/trunk/boinc/; revision=26108 --- checkin_notes | 10 ++++++++++ sched/sched_array.cpp | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/checkin_notes b/checkin_notes index eddc880ae9..2a1ef2c5e1 100644 --- a/checkin_notes +++ b/checkin_notes @@ -5946,3 +5946,13 @@ David 12 Sept 2012 html/user/ forum_search_action.php + +David 13 Sept 2012 + - scheduler: fix logic error limited locality scheduling. + In LLS array pass, skip file-on-host check if host + doesn't have any sticky files. + TODO: it should actually be "any sticky files for this app". + But we currently don't have any way to know that. + + sched/ + sched_array.cpp diff --git a/sched/sched_array.cpp b/sched/sched_array.cpp index 2fb13187cf..bf5b67d081 100644 --- a/sched/sched_array.cpp +++ b/sched/sched_array.cpp @@ -106,10 +106,20 @@ static bool quick_check( } // locality sched lite check. - // Note: allow non-LSL jobs; otherwise we could starve them + // Allow non-LSL jobs; otherwise we could starve them + // NOTE: THIS NEGATES THE OTHER SCHED POLICIES (reliable, etc.). + // Need to think of some way of combining them. // if (g_wreq->locality_sched_lite) { - if (app->locality_scheduling == LOCALITY_SCHED_LITE) { + // skip this job if host has sticky files + // but none of them is used by this job. + // TODO: it should really be "host has sticky files for this app". + // However, we don't have a way of making that association. + // Could add something based on filename + // + if (app->locality_scheduling == LOCALITY_SCHED_LITE + && g_request->file_infos.size() + ) { int n = nfiles_on_host(wu_result.workunit); if (config.debug_array) { log_messages.printf(MSG_NORMAL,