mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
feat(tstats): split PDSCH task preparation timer
This commit is contained in:
@@ -131,13 +131,13 @@ static void tx_func(processingData_L1tx_t *info)
|
||||
frame_tx,
|
||||
slot_tx,
|
||||
1);
|
||||
|
||||
|
||||
if (tx_slot_type == NR_DOWNLINK_SLOT) {
|
||||
stop_meas(&info->gNB->gnb_tx_procedures_stats);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PHY_VARS_gNB *gNB = info->gNB;
|
||||
processingData_RU_t syncMsgRU;
|
||||
syncMsgRU.frame_tx = frame_tx;
|
||||
@@ -158,7 +158,7 @@ static void tx_func(processingData_L1tx_t *info)
|
||||
}
|
||||
}
|
||||
|
||||
void *L1_rx_thread(void *arg)
|
||||
void *L1_rx_thread(void *arg)
|
||||
{
|
||||
PHY_VARS_gNB *gNB = (PHY_VARS_gNB*)arg;
|
||||
|
||||
@@ -274,6 +274,7 @@ static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size
|
||||
NULL,
|
||||
output,
|
||||
end - output);
|
||||
|
||||
output += print_meas_log(&gNB->ru_tx_func_stats,
|
||||
"L1 RU TX function",
|
||||
NULL,
|
||||
@@ -298,6 +299,24 @@ static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size
|
||||
NULL,
|
||||
output,
|
||||
end - output);
|
||||
output += print_meas_log(&gNB->dlsch_pdsch_task_setup_stats,
|
||||
"PDSCH task setup",
|
||||
NULL,
|
||||
NULL,
|
||||
output,
|
||||
end - output);
|
||||
output += print_meas_log(&gNB->dlsch_pdsch_task_push_stats,
|
||||
"PDSCH task push",
|
||||
NULL,
|
||||
NULL,
|
||||
output,
|
||||
end - output);
|
||||
output += print_meas_log(&gNB->dlsch_pdsch_direct_proc_stats,
|
||||
"PDSCH direct processing",
|
||||
NULL,
|
||||
NULL,
|
||||
output,
|
||||
end - output);
|
||||
output += print_meas_log(&gNB->dlsch_pdsch_task_wait_stats,
|
||||
"PDSCH task wait",
|
||||
NULL,
|
||||
@@ -378,7 +397,7 @@ static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size
|
||||
reset_meas(&gNB->l1_tx_proc);
|
||||
reset_meas(&gNB->l1_rx_proc);
|
||||
reset_meas(&gNB->phy_proc_tx);
|
||||
|
||||
|
||||
reset_meas(&gNB->gnb_tx_procedures_stats);
|
||||
reset_meas(&gNB->ru_tx_func_stats);
|
||||
|
||||
@@ -398,8 +417,12 @@ static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size
|
||||
reset_meas(&gNB->dlsch_resource_mapping_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_generation_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_prep_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_setup_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_push_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_direct_proc_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_wait_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_merge_stats);
|
||||
|
||||
reset_meas(&gNB->phy_proc_rx);
|
||||
reset_meas(&gNB->ulsch_decoding_stats);
|
||||
reset_meas(&gNB->ts_deinterleave);
|
||||
@@ -467,9 +490,14 @@ void *nrL1_stats_thread(void *param) {
|
||||
init_sorted_list_meas(&gNB->dlsch_scrambling_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_modulation_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_generation_stats, SORTED_LIST_SIZE);
|
||||
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_task_prep_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_task_setup_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_task_push_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_direct_proc_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_task_wait_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->dlsch_pdsch_task_merge_stats, SORTED_LIST_SIZE);
|
||||
|
||||
init_sorted_list_meas(&gNB->phy_proc_rx, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->ulsch_decoding_stats, SORTED_LIST_SIZE);
|
||||
init_sorted_list_meas(&gNB->ts_deinterleave, SORTED_LIST_SIZE);
|
||||
@@ -515,9 +543,14 @@ void *nrL1_stats_thread(void *param) {
|
||||
reset_meas(&gNB->dlsch_scrambling_stats);
|
||||
reset_meas(&gNB->dlsch_modulation_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_generation_stats);
|
||||
|
||||
reset_meas(&gNB->dlsch_pdsch_task_prep_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_setup_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_push_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_direct_proc_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_wait_stats);
|
||||
reset_meas(&gNB->dlsch_pdsch_task_merge_stats);
|
||||
|
||||
reset_meas(&gNB->phy_proc_rx);
|
||||
reset_meas(&gNB->ulsch_decoding_stats);
|
||||
reset_meas(&gNB->ts_deinterleave);
|
||||
@@ -578,9 +611,14 @@ void *nrL1_stats_thread(void *param) {
|
||||
free_sorted_list_meas(&gNB->dlsch_scrambling_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_modulation_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_generation_stats);
|
||||
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_task_prep_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_task_setup_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_task_push_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_direct_proc_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_task_wait_stats);
|
||||
free_sorted_list_meas(&gNB->dlsch_pdsch_task_merge_stats);
|
||||
|
||||
free_sorted_list_meas(&gNB->phy_proc_rx);
|
||||
free_sorted_list_meas(&gNB->ulsch_decoding_stats);
|
||||
free_sorted_list_meas(&gNB->ts_deinterleave);
|
||||
|
||||
@@ -832,9 +832,14 @@ static int do_one_dlsch(unsigned char *input_ptr, PHY_VARS_gNB *gNB, NR_gNB_DLSC
|
||||
int sz_arr = 0;
|
||||
unsigned int re_beginning_of_symbol = 0;
|
||||
int res = 0;
|
||||
for (int l_symbol = rel15->StartSymbolIndex; l_symbol < rel15->StartSymbolIndex + rel15->NrOfSymbols;
|
||||
l_symbol += num_pdsch_symbols_per_task) {
|
||||
|
||||
for (int l_symbol = rel15->StartSymbolIndex; l_symbol < rel15->StartSymbolIndex + rel15->NrOfSymbols; l_symbol += num_pdsch_symbols_per_task) {
|
||||
pdschSymbolProc_t *rdata = &arr[sz_arr];
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
start_meas(&gNB->dlsch_pdsch_task_setup_stats);
|
||||
}
|
||||
|
||||
rdata->ans = &ans;
|
||||
++sz_arr;
|
||||
|
||||
@@ -867,11 +872,33 @@ static int do_one_dlsch(unsigned char *input_ptr, PHY_VARS_gNB *gNB, NR_gNB_DLSC
|
||||
reset_meas(&rdata->dlsch_precoding_stats);
|
||||
for (int l = 0; l < rel15->nrOfLayers; l++)
|
||||
rdata->tx_layers[l] = tx_layers[l];
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
stop_meas(&gNB->dlsch_pdsch_task_setup_stats);
|
||||
}
|
||||
|
||||
if (l_symbol < rel15->StartSymbolIndex + rel15->NrOfSymbols - num_pdsch_symbols_per_task) {
|
||||
task_t t = {.func = &nr_pdsch_symbol_processing, .args = rdata};
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
start_meas(&gNB->dlsch_pdsch_task_push_stats);
|
||||
}
|
||||
|
||||
pushTpool(&gNB->threadPool, t);
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
stop_meas(&gNB->dlsch_pdsch_task_push_stats);
|
||||
}
|
||||
} else {
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
start_meas(&gNB->dlsch_pdsch_direct_proc_stats);
|
||||
}
|
||||
|
||||
nr_pdsch_symbol_processing(rdata);
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
stop_meas(&gNB->dlsch_pdsch_direct_proc_stats);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -891,7 +918,7 @@ static int do_one_dlsch(unsigned char *input_ptr, PHY_VARS_gNB *gNB, NR_gNB_DLSC
|
||||
merge_meas(&gNB->dlsch_resource_mapping_stats, &arr[i].dlsch_resource_mapping_stats);
|
||||
merge_meas(&gNB->dlsch_precoding_stats, &arr[i].dlsch_precoding_stats);
|
||||
}
|
||||
|
||||
|
||||
if (slot_type == NR_DOWNLINK_SLOT) {
|
||||
stop_meas(&gNB->dlsch_pdsch_task_merge_stats);
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ typedef struct {
|
||||
int16_t *llr;
|
||||
#ifdef ENABLE_CUDA
|
||||
/// \brief llr values link to device memory
|
||||
int16_t* llr_dev;
|
||||
int16_t* llr_dev;
|
||||
#endif
|
||||
// PTRS symbol index, to be updated every PTRS symbol within a slot.
|
||||
uint8_t ptrs_symbol_index;
|
||||
@@ -467,15 +467,19 @@ typedef struct PHY_VARS_gNB_s {
|
||||
time_stats_t dlsch_resource_mapping_stats;
|
||||
time_stats_t dlsch_precoding_stats;
|
||||
time_stats_t dlsch_pdsch_task_prep_stats;
|
||||
time_stats_t dlsch_pdsch_task_wait_stats;
|
||||
time_stats_t dlsch_pdsch_task_wait_stats;
|
||||
time_stats_t dlsch_pdsch_task_merge_stats;
|
||||
time_stats_t dlsch_pdsch_task_setup_stats;
|
||||
time_stats_t dlsch_pdsch_task_push_stats;
|
||||
time_stats_t dlsch_pdsch_direct_proc_stats;
|
||||
|
||||
time_stats_t tinput;
|
||||
time_stats_t tinput_memcpy;
|
||||
time_stats_t tprep;
|
||||
time_stats_t tparity;
|
||||
time_stats_t toutput;
|
||||
time_stats_t tconcat;
|
||||
|
||||
|
||||
time_stats_t dlsch_rate_matching_stats;
|
||||
time_stats_t dlsch_interleaving_stats;
|
||||
time_stats_t dlsch_segmentation_stats;
|
||||
@@ -551,7 +555,7 @@ typedef struct LDPCDecode_s {
|
||||
NR_UL_gNB_HARQ_t *ulsch_harq;
|
||||
t_nrLDPC_dec_params decoderParms;
|
||||
NR_gNB_ULSCH_t *ulsch;
|
||||
int16_t* ulsch_llr;
|
||||
int16_t* ulsch_llr;
|
||||
int ulsch_id;
|
||||
int harq_pid;
|
||||
int rv_index;
|
||||
|
||||
Reference in New Issue
Block a user