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.
master
Alejandro Leal Conejos 4 years ago committed by AlaiaL
parent 163976f050
commit a51f2a1de4

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

@ -49,6 +49,20 @@ sys_metrics_processor::proc_stats_info::proc_stats_info()
arg_end >> env_start >> env_end >> exit_code; 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() sys_metrics_t sys_metrics_processor::get_metrics()
{ {
auto current_time = std::chrono::steady_clock::now(); 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. // The time elapsed between 2 measures must be greater that 100 milliseconds.
if (measure_interval_ms < 100u) { if (measure_interval_ms < 100u) {
logger.warning("Interval less than 100ms, skipping measurement."); logger.warning("Interval less than 100ms, skipping measurement.");
return {}; return create_null_metrics();
} }
sys_metrics_t metrics; sys_metrics_t metrics;

Loading…
Cancel
Save