Skip to content

Commit 562192e

Browse files
AlaiaLcodebot
authored andcommitted
app_units: added logger consumer for MAC metrics
1 parent fddd247 commit 562192e

File tree

3 files changed

+71
-3
lines changed

3 files changed

+71
-3
lines changed

apps/units/flexible_o_du/o_du_high/du_high/metrics/du_high_mac_metrics_consumers.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "du_high_mac_metrics_consumers.h"
1212
#include "srsran/mac/mac_metrics.h"
1313
#include "srsran/ran/pci.h"
14+
#include "srsran/support/format/fmt_to_c_str.h"
1415

1516
using namespace srsran;
1617

@@ -74,3 +75,50 @@ void mac_metrics_consumer_json::handle_metric(const app_services::metrics_set& m
7475
ctx.write<metric_timestamp_tag>(get_time_stamp());
7576
log_chan(ctx);
7677
}
78+
79+
static void write_latency_information(fmt::memory_buffer& buffer,
80+
const mac_dl_cell_metric_report::latency_report& report,
81+
std::string_view name,
82+
bool add_space = true,
83+
bool add_new_line = false)
84+
{
85+
fmt::format_to(std::back_inserter(buffer),
86+
"{}=[avg={}usec max={}usec max_slot={}]",
87+
name,
88+
std::round(report.average.count() * 1e-3),
89+
std::round(report.max.count() * 1e-3),
90+
report.max_slot);
91+
92+
if (add_space) {
93+
fmt::format_to(std::back_inserter(buffer), " ");
94+
}
95+
if (add_new_line) {
96+
fmt::format_to(std::back_inserter(buffer), "\n");
97+
}
98+
}
99+
100+
void mac_metrics_consumer_log::handle_metric(const app_services::metrics_set& metric)
101+
{
102+
const mac_metric_report& mac_metrics = static_cast<const mac_metrics_impl&>(metric).get_metrics();
103+
104+
fmt::memory_buffer buffer;
105+
fmt::format_to(std::back_inserter(buffer), "Mac Metrics: \n");
106+
107+
for (unsigned i = 0, e = mac_metrics.dl.cells.size(), last_index = e - 1; i != e; ++i) {
108+
const mac_dl_cell_metric_report& cell = mac_metrics.dl.cells[i];
109+
110+
fmt::format_to(std::back_inserter(buffer),
111+
" - pci={} nof_slots={} slot_duration={}usec nof_voluntary_context_switches={} "
112+
"nof_involuntary_context_switches={} ",
113+
static_cast<unsigned>(cell.pci),
114+
cell.nof_slots,
115+
std::round(cell.slot_duration.count() * 1e-3),
116+
cell.count_voluntary_context_switches,
117+
cell.count_involuntary_context_switches);
118+
119+
write_latency_information(buffer, cell.wall_clock_latency, "wall_clock_latency");
120+
write_latency_information(buffer, cell.slot_ind_handle_latency, "slot_ind_latency", false, i != last_index);
121+
}
122+
123+
log_chan("{}", to_c_str(buffer));
124+
}

apps/units/flexible_o_du/o_du_high/du_high/metrics/du_high_mac_metrics_consumers.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,17 @@ class mac_metrics_consumer_json : public app_services::metrics_consumer
2828
srslog::log_channel& log_chan;
2929
};
3030

31+
/// Consumer for the logger MAC metrics.
32+
class mac_metrics_consumer_log : public app_services::metrics_consumer
33+
{
34+
public:
35+
explicit mac_metrics_consumer_log(srslog::log_channel& log_chan_) : log_chan(log_chan_) {}
36+
37+
// See interface for documentation.
38+
void handle_metric(const app_services::metrics_set& metric) override;
39+
40+
private:
41+
srslog::log_channel& log_chan;
42+
};
43+
3144
} // namespace srsran

apps/units/flexible_o_du/o_du_high/o_du_high_unit_factory.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ static mac_metrics_notifier* build_mac_du_metrics(std::vector<app_services::metr
200200

201201
// MAC metrics.
202202
const app_helpers::metrics_config& metrics_config = du_hi_cfg.metrics.common_metrics_cfg;
203-
if (!metrics_config.json_config.enable_json_metrics) {
203+
if (!metrics_config.enabled()) {
204204
return out;
205205
}
206206

@@ -213,8 +213,15 @@ static mac_metrics_notifier* build_mac_du_metrics(std::vector<app_services::metr
213213
out = &(*mac_metric_gen);
214214
mac_metrics_cfg.producers.push_back(std::move(mac_metric_gen));
215215

216-
mac_metrics_cfg.consumers.push_back(
217-
std::make_unique<mac_metrics_consumer_json>(app_helpers::fetch_json_metrics_log_channel()));
216+
if (metrics_config.enable_log_metrics) {
217+
mac_metrics_cfg.consumers.push_back(
218+
std::make_unique<mac_metrics_consumer_log>(app_helpers::fetch_logger_metrics_log_channel()));
219+
}
220+
221+
if (metrics_config.json_config.enable_json_metrics) {
222+
mac_metrics_cfg.consumers.push_back(
223+
std::make_unique<mac_metrics_consumer_json>(app_helpers::fetch_json_metrics_log_channel()));
224+
}
218225

219226
return out;
220227
}

0 commit comments

Comments
 (0)