From 0ba7cd7df9e56078652c179a27121530b1aab190 Mon Sep 17 00:00:00 2001 From: AlaiaL Date: Thu, 25 Feb 2021 14:21:28 +0100 Subject: [PATCH] [metrics] Added system metrics to the enb's stdout --- lib/include/srslte/interfaces/enb_metrics_interface.h | 2 ++ lib/src/system/sys_metrics_processor.cpp | 1 - srsenb/hdr/enb.h | 4 ++++ srsenb/src/CMakeLists.txt | 4 ++-- srsenb/src/enb.cc | 1 + srsenb/src/metrics_stdout.cc | 9 +++++++-- srsue/src/metrics_stdout.cc | 8 ++++---- 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/include/srslte/interfaces/enb_metrics_interface.h b/lib/include/srslte/interfaces/enb_metrics_interface.h index 6cc8f6170..1823ebb66 100644 --- a/lib/include/srslte/interfaces/enb_metrics_interface.h +++ b/lib/include/srslte/interfaces/enb_metrics_interface.h @@ -20,6 +20,7 @@ #include "srsenb/hdr/stack/rrc/rrc_metrics.h" #include "srsenb/hdr/stack/upper/common_enb.h" #include "srsenb/hdr/stack/upper/s1ap_metrics.h" +#include "srslte/system/sys_metrics.h" #include "srslte/common/metrics_hub.h" #include "srslte/radio/radio_metrics.h" #include "srslte/upper/pdcp_metrics.h" @@ -48,6 +49,7 @@ struct enb_metrics_t { srslte::rf_metrics_t rf; std::vector phy; stack_metrics_t stack; + srslte::sys_metrics_t sys; bool running; }; diff --git a/lib/src/system/sys_metrics_processor.cpp b/lib/src/system/sys_metrics_processor.cpp index 61c8e6f5b..5aaab06d8 100644 --- a/lib/src/system/sys_metrics_processor.cpp +++ b/lib/src/system/sys_metrics_processor.cpp @@ -87,7 +87,6 @@ float sys_metrics_processor::cpu_usage(const proc_stats_info& current_query, flo static const unsigned cpu_count = ::sysconf(_SC_NPROCESSORS_CONF); static const float ticks_per_second = ::sysconf(_SC_CLK_TCK); - printf("delta time is: %f\n", delta_time_in_seconds); return ((current_query.stime + current_query.utime) - (last_query.stime + last_query.utime)) * 100.f / (cpu_count * ticks_per_second * delta_time_in_seconds); } diff --git a/srsenb/hdr/enb.h b/srsenb/hdr/enb.h index aa97675bd..3b246bd32 100644 --- a/srsenb/hdr/enb.h +++ b/srsenb/hdr/enb.h @@ -31,6 +31,7 @@ #include "srsenb/hdr/stack/enb_stack_base.h" #include "srsenb/hdr/stack/rrc/rrc_config.h" +#include "srslte/system/sys_metrics_processor.h" #include "srslte/common/bcd_helpers.h" #include "srslte/common/buffer_pool.h" #include "srslte/common/interfaces_common.h" @@ -150,6 +151,9 @@ private: std::unique_ptr radio = nullptr; std::unique_ptr phy = nullptr; + // System metrics processor. + srslte::sys_metrics_processor sys_proc; + srslte::LOG_LEVEL_ENUM level(std::string l); std::string get_build_mode(); diff --git a/srsenb/src/CMakeLists.txt b/srsenb/src/CMakeLists.txt index 376e9d6f2..137204a21 100644 --- a/srsenb/src/CMakeLists.txt +++ b/srsenb/src/CMakeLists.txt @@ -25,8 +25,8 @@ target_link_libraries(enb_cfg_parser ${LIBCONFIGPP_LIBRARIES}) add_executable(srsenb main.cc enb.cc metrics_stdout.cc metrics_csv.cc metrics_json.cc) -set(SRSENB_SOURCES srsenb_phy srsenb_stack srsenb_upper srsenb_mac srsenb_rrc srslog) -set(SRSLTE_SOURCES srslte_common srslte_mac srslte_phy srslte_upper srslte_radio rrc_asn1 s1ap_asn1 enb_cfg_parser srslog) +set(SRSENB_SOURCES srsenb_phy srsenb_stack srsenb_upper srsenb_mac srsenb_rrc srslog system) +set(SRSLTE_SOURCES srslte_common srslte_mac srslte_phy srslte_upper srslte_radio rrc_asn1 s1ap_asn1 enb_cfg_parser srslog system) set(SRSENB_SOURCES ${SRSENB_SOURCES} srsgnb_phy srsgnb_stack srsgnb_upper srsgnb_mac srsgnb_rrc) set(SRSLTE_SOURCES ${SRSLTE_SOURCES} rrc_nr_asn1 ngap_nr_asn1) diff --git a/srsenb/src/enb.cc b/srsenb/src/enb.cc index afee5b246..1fbe1f777 100644 --- a/srsenb/src/enb.cc +++ b/srsenb/src/enb.cc @@ -200,6 +200,7 @@ bool enb::get_metrics(enb_metrics_t* m) phy->get_metrics(m->phy); stack->get_metrics(&m->stack); m->running = started; + m->sys = sys_proc.get_metrics(); return true; } diff --git a/srsenb/src/metrics_stdout.cc b/srsenb/src/metrics_stdout.cc index cf44bde1b..59f225dd9 100644 --- a/srsenb/src/metrics_stdout.cc +++ b/srsenb/src/metrics_stdout.cc @@ -84,8 +84,8 @@ void metrics_stdout::set_metrics(const enb_metrics_t& metrics, const uint32_t pe if (++n_reports > 10) { n_reports = 0; cout << endl; - cout << "------DL-------------------------------UL--------------------------------------------" << endl; - cout << "rnti cqi ri mcs brate ok nok (%) pusch pucch phr mcs brate ok nok (%) bsr" << endl; + cout << "------DL-------------------------------UL---------------------------------------------|----SYS----" << endl; + cout << "rnti cqi ri mcs brate ok nok (%) pusch pucch phr mcs brate ok nok (%) bsr cpu mem" << endl; } for (size_t i = 0; i < metrics.stack.rrc.ues.size(); i++) { @@ -161,6 +161,11 @@ void metrics_stdout::set_metrics(const enb_metrics_t& metrics, const uint32_t pe cout << float_to_string(0, 1, 4) << "%"; } cout << float_to_eng_string(metrics.stack.mac.ues[i].ul_buffer, 2); + + // Write the system metrics. + cout << float_to_string(metrics.sys.process_cpu_usage, 2); + cout << float_to_string(metrics.sys.process_realmem, 2); + cout << endl; } diff --git a/srsue/src/metrics_stdout.cc b/srsue/src/metrics_stdout.cc index 6c645521b..4264439ef 100644 --- a/srsue/src/metrics_stdout.cc +++ b/srsue/src/metrics_stdout.cc @@ -67,14 +67,14 @@ void metrics_stdout::print_table(const bool display_neighbours) cout << "--------Signal-------------Neighbour--DL-------------------------------------UL-----------------------|---" "--SYS-----" << endl; - cout << "cc pci rsrp pl cfo pci rsrp mcs snr turbo brate bler ta_us mcs buff brate bler " + cout << "cc pci rsrp pl cfo pci rsrp mcs snr turbo brate bler ta_us mcs buff brate bler " "cpu mem" << endl; } else { cout << "--------Signal--------------DL-------------------------------------UL----------------------|-----SYS----" "--" << endl; - cout << "cc pci rsrp pl cfo mcs snr turbo brate bler ta_us mcs buff brate bler cpu mem" + cout << "cc pci rsrp pl cfo mcs snr turbo brate bler ta_us mcs buff brate bler cpu mem" << endl; } table_has_neighbours = display_neighbours; @@ -169,8 +169,8 @@ void metrics_stdout::set_metrics(const ue_metrics_t& metrics, const uint32_t per } // Write the system metrics. - cout << float_to_string(metrics.sys.process_cpu_usage, 2); - cout << float_to_string(metrics.sys.system_mem, 2); + cout << float_to_string(metrics.sys.process_cpu_usage, 3); + cout << float_to_string(metrics.sys.process_realmem, 3); cout << endl; }