From 8ad215f680c131d06cf53801c9c680f5838a418b Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 21 Aug 2023 17:09:58 +0200 Subject: [PATCH] Lower scheduler PF averaging constant This time constant plays a major role in how long a UE has to wait maximally before it might be scheduled. For instance, if a UE had a lot of traffic, the average traffic will be high, pushing the PF coefficient down. If another UE with no traffic in the past becomes active with heavy traffic, the first UE might not be scheduled for an extended period of time. In the AW2S-Amarisoft UE CI test pipeline, we sometimes see that the maximum number of RLC retransmissions was reached. While this might not be the (only) cause, scheduling a UE more often might prevent such situations, and we saw an improved stability. --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 2 +- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index 01a0a1ef6b..00fefe3b31 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -614,7 +614,7 @@ static void pf_dl(module_id_t module_id, /* get the PID of a HARQ process awaiting retrnasmission, or -1 otherwise */ sched_pdsch->dl_harq_pid = sched_ctrl->retrans_dl_harq.head; /* Calculate Throughput */ - const float a = 0.0005f; // corresponds to 200ms window + const float a = 0.01f; const uint32_t b = UE->mac_stats.dl.current_bytes; UE->dl_thr_ue = (1 - a) * UE->dl_thr_ue + a * b; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index 0bc137f910..78d3397e60 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -1646,7 +1646,7 @@ static void pf_ul(module_id_t module_id, const NR_mac_dir_stats_t *stats = &UE->mac_stats.ul; /* Calculate throughput */ - const float a = 0.0005f; // corresponds to 200ms window + const float a = 0.01f; const uint32_t b = stats->current_bytes; UE->ul_thr_ue = (1 - a) * UE->ul_thr_ue + a * b;