Update/refine MAC stats
Print a number of statistics, e.g., rx_ulsch_sdu to track UL MAC stats timing. Remove unused time_meas_t definitions, and fix the name for the total gNB scheduler time.
This commit is contained in:
@@ -174,7 +174,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slo
|
||||
clear_beam_information(&gNB->beam_info, frame, slot, slots_frame);
|
||||
|
||||
gNB->frame = frame;
|
||||
start_meas(&gNB->eNB_scheduler);
|
||||
start_meas(&gNB->gNB_scheduler);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_IN);
|
||||
|
||||
for (int CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
||||
@@ -244,7 +244,9 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slo
|
||||
}
|
||||
|
||||
// This schedules the DCI for Uplink and subsequently PUSCH
|
||||
start_meas(&gNB->schedule_ulsch);
|
||||
nr_schedule_ulsch(module_idP, frame, slot, &sched_info->UL_dci_req);
|
||||
stop_meas(&gNB->schedule_ulsch);
|
||||
|
||||
// This schedules the DCI for Downlink and PDSCH
|
||||
start_meas(&gNB->schedule_dlsch);
|
||||
@@ -262,7 +264,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slo
|
||||
const int current_index = ul_buffer_index(frame, slot, slots_frame, gNB->UL_tti_req_ahead_size);
|
||||
copy_ul_tti_req(&sched_info->UL_tti_req, &gNB->UL_tti_req_ahead[0][current_index]);
|
||||
|
||||
stop_meas(&gNB->eNB_scheduler);
|
||||
stop_meas(&gNB->gNB_scheduler);
|
||||
NR_SCHED_UNLOCK(&gNB->sched_lock);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT);
|
||||
}
|
||||
|
||||
@@ -340,9 +340,7 @@ static void nr_store_dlsch_buffer(module_id_t module_id, frame_t frame, slot_t s
|
||||
continue;
|
||||
if (lcid == DL_SCH_LCID_DTCH && nr_timer_is_active(&sched_ctrl->transm_interrupt))
|
||||
continue;
|
||||
start_meas(&RC.nrmac[module_id]->rlc_status_ind);
|
||||
sched_ctrl->rlc_status[lcid] = nr_mac_rlc_status_ind(rnti, frame, lcid);
|
||||
stop_meas(&RC.nrmac[module_id]->rlc_status_ind);
|
||||
|
||||
if (sched_ctrl->rlc_status[lcid].bytes_in_buffer == 0)
|
||||
continue;
|
||||
|
||||
@@ -954,7 +954,9 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
|
||||
{
|
||||
gNB_MAC_INST *gNB_mac = RC.nrmac[gnb_mod_idP];
|
||||
NR_SCHED_LOCK(&gNB_mac->sched_lock);
|
||||
start_meas(&gNB_mac->rx_ulsch_sdu);
|
||||
_nr_rx_sdu(gnb_mod_idP, CC_idP, frameP, slotP, rntiP, sduP, sdu_lenP, harq_pid, timing_advance, ul_cqi, rssi);
|
||||
stop_meas(&gNB_mac->rx_ulsch_sdu);
|
||||
NR_SCHED_UNLOCK(&gNB_mac->sched_lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -88,10 +88,12 @@ void *nrmac_stats_thread(void *arg) {
|
||||
p += dump_mac_stats(gNB, p, end - p, false);
|
||||
NR_SCHED_UNLOCK(&gNB->sched_lock);
|
||||
p += snprintf(p, end - p, "\n");
|
||||
p += print_meas_log(&gNB->eNB_scheduler, "DL & UL scheduling timing", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->gNB_scheduler, "gNB_scheduler", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->rx_ulsch_sdu, "rx_ulsch_sdu", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->schedule_dlsch, "dlsch scheduler", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->schedule_ulsch, "ulsch scheduler", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->schedule_ra, "RA scheduler", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->rlc_data_req, "rlc_data_req", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->rlc_status_ind, "rlc_status_ind", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->nr_srs_ri_computation_timer, "UL-RI computation time", NULL, NULL, p, end - p);
|
||||
p += print_meas_log(&gNB->nr_srs_tpmi_computation_timer, "UL-TPMI computation time", NULL, NULL, p, end - p);
|
||||
fwrite(output, p - output, 1, file);
|
||||
|
||||
@@ -849,34 +849,22 @@ typedef struct gNB_MAC_INST_s {
|
||||
NR_UEs_t UE_info;
|
||||
|
||||
// MAC function execution peformance profiler
|
||||
/// processing time of eNB scheduler
|
||||
time_stats_t eNB_scheduler;
|
||||
/// processing time of eNB scheduler for SI
|
||||
time_stats_t schedule_si;
|
||||
/// processing time of eNB scheduler for Random access
|
||||
/// processing time of gNB scheduler
|
||||
time_stats_t gNB_scheduler;
|
||||
/// processing time of gNB scheduler for Random access
|
||||
time_stats_t schedule_ra;
|
||||
/// processing time of eNB ULSCH scheduler
|
||||
time_stats_t schedule_ulsch;
|
||||
/// processing time of eNB DCI generation
|
||||
time_stats_t fill_DLSCH_dci;
|
||||
/// processing time of eNB MAC preprocessor
|
||||
time_stats_t schedule_dlsch_preprocessor;
|
||||
/// processing time of eNB DLSCH scheduler
|
||||
/// processing time of gNB DLSCH scheduler
|
||||
time_stats_t schedule_ulsch; // include preprocessor
|
||||
/// processing time of gNB DLSCH scheduler
|
||||
time_stats_t schedule_dlsch; // include rlc_data_req + MAC header + preprocessor
|
||||
/// processing time of rlc_data_req
|
||||
time_stats_t rlc_data_req;
|
||||
/// processing time of rlc_status_ind
|
||||
time_stats_t rlc_status_ind;
|
||||
/// processing time of nr_srs_ri_computation
|
||||
time_stats_t nr_srs_ri_computation_timer;
|
||||
/// processing time of nr_srs_tpmi_estimation
|
||||
time_stats_t nr_srs_tpmi_computation_timer;
|
||||
/// processing time of eNB MCH scheduler
|
||||
time_stats_t schedule_mch;
|
||||
/// processing time of eNB ULSCH reception
|
||||
/// processing time of gNB ULSCH reception
|
||||
time_stats_t rx_ulsch_sdu; // include rlc_data_ind
|
||||
/// processing time of eNB PCH scheduler
|
||||
time_stats_t schedule_pch;
|
||||
|
||||
NR_beam_info_t beam_info;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user