@@ -215,7 +215,7 @@ void flexible_o_du_metrics_consumer_json::handle_metric(const app_services::metr
215215 const auto & metric_enc = odu_metrics.du .low .ldpc_metrics .encoder_metrics ;
216216 double ldpc_enc_cpu_usage = 100.0 * metric_enc.cpu_usage_us / metric_period_us;
217217 ldpc_encoder.write <metric_average_cb_size>(metric_enc.avg_cb_size );
218- ldpc_encoder.write <metric_average_latency>(metric_enc.avg_cb_latency );
218+ ldpc_encoder.write <metric_average_latency>(metric_enc.avg_cb_latency_us );
219219 ldpc_encoder.write <metric_min_latency>(metric_enc.min_cb_latency_us );
220220 ldpc_encoder.write <metric_max_latency>(metric_enc.max_cb_latency_us );
221221 ldpc_encoder.write <metric_avg_throughput_mbps>(metric_enc.encoding_rate_Mbps );
@@ -456,14 +456,22 @@ static void log_upper_phy_metrics_verbose(fmt::basic_memory_buffer<char, str_buf
456456 double pusch_wait_time_percent =
457457 validate_fp_value (100.0 * static_cast <double >(du_lo.pusch_metrics .pusch_proc_metrics .total_wait_time .count ()) /
458458 static_cast <double >(du_lo.pusch_metrics .pusch_proc_metrics .total_proc_time .count ()));
459+ fmt::format_to (std::back_inserter (buffer), " \n " );
460+
461+ const auto & dl_processor = du_lo.dl_processor_metrics ;
462+ fmt::format_to (std::back_inserter (buffer),
463+ " {:<25} max_latency={:.2f} us in slot={}\n " ,
464+ " DL processing:" ,
465+ validate_fp_value (dl_processor.max_latency_us .first ),
466+ dl_processor.max_latency_us .second );
459467
460468 const auto & ldpc_encoder = du_lo.ldpc_metrics .encoder_metrics ;
461469 fmt::format_to (std::back_inserter (buffer),
462470 " {:<25} avg_cb_size={:.2f} bits, avg_latency={:.2f} us, max_latency={:.2f} us, "
463471 " encode_rate={:.2f} Mbps\n " ,
464472 " LDPC Encoder:" ,
465473 validate_fp_value (ldpc_encoder.avg_cb_size ),
466- validate_fp_value (ldpc_encoder.avg_cb_latency ),
474+ validate_fp_value (ldpc_encoder.avg_cb_latency_us ),
467475 validate_fp_value (ldpc_encoder.max_cb_latency_us ),
468476 validate_fp_value (ldpc_encoder.encoding_rate_Mbps ));
469477
@@ -634,38 +642,6 @@ static void log_upper_phy_metrics_verbose(fmt::basic_memory_buffer<char, str_buf
634642 fmt::format_to (std::back_inserter (buffer), " |-> UL-SCH Demux: {:.2f} %\n " , ulsch_demux_percent);
635643 fmt::format_to (
636644 std::back_inserter (buffer), " |------> Decoder: {:.2f} % (multi-threaded)\n " , pusch_wait_time_percent);
637- }
638-
639- static void
640- log_handle_du_low_metrics (srslog::log_channel& log_chan, const srs_du::o_du_low_metrics& du_lo, bool verbose)
641- {
642- if (du_lo.metrics_period == std::chrono::microseconds ()) {
643- return ;
644- }
645-
646- fmt::basic_memory_buffer<char , str_buffer_size> buffer;
647- fmt::format_to (std::back_inserter (buffer), " Upper PHY metrics:\n " );
648-
649- // Verbose logging.
650- if (verbose) {
651- log_upper_phy_metrics_verbose (buffer, du_lo);
652- }
653-
654- const auto & ldpc_encoder = du_lo.ldpc_metrics .encoder_metrics ;
655- const auto & ldpc_decoder = du_lo.ldpc_metrics .decoder_metrics ;
656- const auto & ldpc_rm = du_lo.ldpc_metrics .rate_match_metrics ;
657- const auto & ldpc_rdm = du_lo.ldpc_metrics .rate_dematch_metrics ;
658- const auto & crc_pdsch = du_lo.pdsch_metrics .crc_metrics ;
659- const auto & crc_pusch = du_lo.pusch_metrics .crc_metrics ;
660- const auto & prg_pdsch = du_lo.pdsch_metrics .scrambling_metrics ;
661- const auto & prg_pusch = du_lo.pusch_metrics .scrambling_metrics ;
662- const auto & pusch_demod_map = du_lo.pusch_metrics .demod_demapper_metrics ;
663- const auto & pdsch_mod = du_lo.pdsch_metrics .modulator_metrics ;
664- const auto & pdsch_dmrs = du_lo.pdsch_metrics .dmrs_metrics ;
665- const auto & p = du_lo.pdsch_metrics .precoding_metrics ;
666- const auto & xform = du_lo.pusch_metrics .xform_precoder_metrics ;
667- const auto & pdsch_proc = du_lo.pdsch_metrics .pdsch_proc_metrics ;
668- const auto & pusch_proc = du_lo.pusch_metrics .pusch_proc_metrics ;
669645
670646 // CPU consumption.
671647 double metric_period_us = static_cast <double >(du_lo.metrics_period .count ());
@@ -711,6 +687,41 @@ log_handle_du_low_metrics(srslog::log_channel& log_chan, const srs_du::o_du_low_
711687 validate_fp_value (descramble_cpu_usage),
712688 validate_fp_value (pusch_demod_map_cpu),
713689 validate_fp_value (pusch_precode_cpu_usage));
690+ }
691+
692+ static void
693+ log_handle_du_low_metrics (srslog::log_channel& log_chan, const srs_du::o_du_low_metrics& du_lo, bool verbose)
694+ {
695+ if (du_lo.metrics_period == std::chrono::microseconds ()) {
696+ return ;
697+ }
698+
699+ fmt::basic_memory_buffer<char , str_buffer_size> buffer;
700+ fmt::format_to (std::back_inserter (buffer),
701+ " PHY metrics: "
702+ " dl_processing_max_latency={:.1f}us "
703+ " dl_processing_max_slot={} "
704+ " ul_processing_max_latency={:.1f}us "
705+ " ul_processing_max_slot={} "
706+ " ldpc_encoder_avg_latency={:.1f}us "
707+ " ldpc_encoder_max_latency={:.1f}us "
708+ " ldpc_decoder_avg_latency={:.1f}us "
709+ " ldp_decoder_max_latency={:.1f}us "
710+ " ldpc_decoder_avg_nof_iter={}" ,
711+ validate_fp_value (du_lo.dl_processor_metrics .max_latency_us .first ),
712+ du_lo.dl_processor_metrics .max_latency_us .second ,
713+ validate_fp_value (du_lo.pusch_metrics .pusch_proc_metrics .max_data_latency_us .first ),
714+ du_lo.pusch_metrics .pusch_proc_metrics .max_data_latency_us .second ,
715+ du_lo.ldpc_metrics .encoder_metrics .avg_cb_latency_us ,
716+ du_lo.ldpc_metrics .encoder_metrics .max_cb_latency_us ,
717+ du_lo.ldpc_metrics .decoder_metrics .avg_cb_latency_us ,
718+ du_lo.ldpc_metrics .decoder_metrics .max_cb_latency_us ,
719+ du_lo.ldpc_metrics .decoder_metrics .avg_nof_iterations );
720+
721+ // Verbose logging.
722+ if (verbose) {
723+ log_upper_phy_metrics_verbose (buffer, du_lo);
724+ }
714725
715726 // Flush buffer to the logger.
716727 log_chan (" {}" , to_c_str (buffer));
0 commit comments