From: Arnaud Giersch Date: Tue, 24 May 2011 11:33:42 +0000 (+0200) Subject: Report lost load with exit status. X-Git-Tag: v0.1~62^2~3 X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/commitdiff_plain/c5a7539afc8ed6dc082772476fe3f74f2fa67e24?ds=sidebyside;hp=-c Report lost load with exit status. --- c5a7539afc8ed6dc082772476fe3f74f2fa67e24 diff --git a/main.cpp b/main.cpp index bce9749..ed8039e 100644 --- a/main.cpp +++ b/main.cpp @@ -39,7 +39,8 @@ namespace { EXIT_FAILURE_SIMU = 0x04, // simulation failed EXIT_FAILURE_CLEAN = 0x08, // error at cleanup EXIT_FAILURE_INTR = 0x10, // interrupted by user - EXIT_FAILURE_OTHER = 0x20, // other error + EXIT_FAILURE_LOAD = 0x20, // lost load on exit + EXIT_FAILURE_OTHER = 0x40, // other error }; // Cannot be globally initialized... @@ -107,32 +108,38 @@ static int simulation_main(int argc, char* argv[]) return result; } -static void check_for_lost_load() +static bool check_for_lost_load() { + bool res = true; double total_init = process::get_total_load_init(); double total_exit = process::get_total_load_exit(); double lost = total_init - total_exit; double lost_ratio = 100.0 * lost / total_init; - if (lost_ratio < -opt::load_ratio_threshold) + if (lost_ratio < -opt::load_ratio_threshold) { XBT_ERROR("Gained load at exit! %g (%g%%) <============", -lost, -lost_ratio); - else if (lost_ratio > opt::load_ratio_threshold) + res = false; + } else if (lost_ratio > opt::load_ratio_threshold) { XBT_ERROR("Lost load at exit! %g (%g%%) <============", lost, lost_ratio); - else + res = false; + } else XBT_VERB("Total load at exit looks good: %g (%g%%)", lost, lost_ratio); double total_running = process::get_total_load_running(); double running_ratio = 100.0 * total_running / total_init; - if (running_ratio < -opt::load_ratio_threshold) + if (running_ratio < -opt::load_ratio_threshold) { XBT_ERROR("Negative running load at exit! %g (%g%%) <============", total_running, running_ratio); - else if (running_ratio > opt::load_ratio_threshold) + res = false; + } else if (running_ratio > opt::load_ratio_threshold) { XBT_ERROR("Remaining running load at exit! %g (%g%%) <============", total_running, running_ratio); - else + res = false; + } else XBT_VERB("Running load at exit looks good: %g (%g%%)", total_running, running_ratio); + return res; } static void signal_handler(int /*sig*/) @@ -288,7 +295,8 @@ int main(int argc, char* argv[]) if (simulated_time >= 0.0) { simulation_time.stop(); elapsed_time.stop(); - check_for_lost_load(); + if (!check_for_lost_load()) + exit_status |= EXIT_FAILURE_LOAD; XBT_INFO(",----[ Results ]"); PR_STATS("Load", loads); PR_STATS("Computation", comps);