From 47a1a07aedb1b3df55ae9c22ce6bfb985b5795e5 Mon Sep 17 00:00:00 2001 From: Graeme A Stewart Date: Wed, 6 Oct 2021 18:00:54 +0200 Subject: [PATCH] Fix wallclock units After the transition to the parameter value class the wallclock monitor now stores values internally in seconds, not in clock ticks. This lead to a wrong comparison for the short wallclock warning. In addition to fixing the test, the method is renamed to avoid confusion. --- package/src/prmon.cpp | 6 ++---- package/src/wallmon.cpp | 2 +- package/src/wallmon.h | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/package/src/prmon.cpp b/package/src/prmon.cpp index 92c2682..f0d4569 100644 --- a/package/src/prmon.cpp +++ b/package/src/prmon.cpp @@ -157,7 +157,7 @@ int ProcessMonitor(const pid_t mpid, const std::string filename, } } for (const auto& monitor : monitors) { - auto wallclock_time = wallclock_monitor_p->get_wallclock_clock_t(); + auto wallclock_time = wallclock_monitor_p->get_wallclock_t(); for (const auto& stat : monitor.second->get_json_average_stats(wallclock_time)) { // We will limit the decimal place accuracy here as it doesn't @@ -221,9 +221,7 @@ int ProcessMonitor(const pid_t mpid, const std::string filename, file.close(); // Check that we ran for a reasonable number of iterations - if (wallclock_monitor_p->get_wallclock_clock_t() / - (interval * sysconf(_SC_CLK_TCK)) < - 1) { + if (wallclock_monitor_p->get_wallclock_t() < prmon::mon_value(interval)) { spdlog::warn( "Wallclock time of monitored process was less than the monitoring " "interval, so average statistics will be unreliable"); diff --git a/package/src/wallmon.cpp b/package/src/wallmon.cpp index 545dee6..fcff80a 100644 --- a/package/src/wallmon.cpp +++ b/package/src/wallmon.cpp @@ -79,7 +79,7 @@ void wallmon::update_stats(const std::vector& pids, walltime_stats.at("wtime").set_value(uptime_sec); } -prmon::mon_value const wallmon::get_wallclock_clock_t() { +prmon::mon_value const wallmon::get_wallclock_t() { // Just ensure we never return a zero return (walltime_stats.at("wtime").get_value() ? walltime_stats.at("wtime").get_value() diff --git a/package/src/wallmon.h b/package/src/wallmon.h index 7c42ad6..6e97fe4 100644 --- a/package/src/wallmon.h +++ b/package/src/wallmon.h @@ -50,8 +50,8 @@ class wallmon final : public Imonitor, public MessageBase { void const get_hardware_info(nlohmann::json& hw_json); void const get_unit_info(nlohmann::json& unit_json); - // Class specific method to retrieve wallclock time in clock ticks - unsigned long long const get_wallclock_clock_t(); + // Class specific method to retrieve wallclock time (in seconds) + unsigned long long const get_wallclock_t(); bool const is_valid() { return true; } };