Fills the value of the number of cpus for the system_metrics_t and

initiliaze its value to 0 when executing 2 measures in less than 100 ms.
This commit is contained in:
Alejandro Leal Conejos 2021-06-07 15:10:04 +02:00 committed by AlaiaL
parent 163976f050
commit a51f2a1de4
2 changed files with 24 additions and 9 deletions

View File

@ -13,6 +13,7 @@
#ifndef SRSRAN_SYS_METRICS_H
#define SRSRAN_SYS_METRICS_H
#include <array>
#include <cstdint>
namespace srsran {
@ -28,7 +29,7 @@ struct sys_metrics_t {
float process_cpu_usage = 0.f;
float system_mem = 0.f;
uint32_t cpu_count = 0;
float cpu_load[metrics_max_supported_cpu];
std::array<float, metrics_max_supported_cpu> cpu_load;
};
} // namespace srsran

View File

@ -49,6 +49,20 @@ sys_metrics_processor::proc_stats_info::proc_stats_info()
arg_end >> env_start >> env_end >> exit_code;
}
/// Returns a null sys_metrics_t with the cpu count field filled.
static sys_metrics_t create_null_metrics()
{
sys_metrics_t metrics;
if (cpu_count > metrics_max_supported_cpu) {
return metrics;
}
metrics.cpu_count = cpu_count;
metrics.cpu_load.fill(0.f);
return metrics;
}
sys_metrics_t sys_metrics_processor::get_metrics()
{
auto current_time = std::chrono::steady_clock::now();
@ -58,7 +72,7 @@ sys_metrics_t sys_metrics_processor::get_metrics()
// The time elapsed between 2 measures must be greater that 100 milliseconds.
if (measure_interval_ms < 100u) {
logger.warning("Interval less than 100ms, skipping measurement.");
return {};
return create_null_metrics();
}
sys_metrics_t metrics;