![]() |
5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
|
UE representation for a proportional fair scheduler. More...
#include "nr-mac-scheduler-ue-info-pf.h"
Public Member Functions | |
NrMacSchedulerUeInfoPF (float alpha, uint16_t rnti, BeamId beamId, const GetRbPerRbgFn &fn) | |
NrMacSchedulerUeInfoPF constructor. | |
void | CalculatePotentialTPutDl (const NrMacSchedulerNs3::FTResources &assignableInIteration) |
Calculate the Potential throughput for downlink. | |
void | CalculatePotentialTPutUl (const NrMacSchedulerNs3::FTResources &assignableInIteration) |
Calculate the Potential throughput for uplink. | |
void | ResetDlMetric () override |
Reset the DL avg Th to the last value. | |
void | ResetDlSchedInfo () override |
Reset DL PF scheduler info. | |
void | ResetUlMetric () override |
Reset the UL avg Th to the last value. | |
void | ResetUlSchedInfo () override |
Reset UL PF scheduler info. | |
void | UpdateDlPFMetric (const NrMacSchedulerNs3::FTResources &totAssigned, double timeWindow) |
Update the PF metric for downlink. | |
void | UpdateUlPFMetric (const NrMacSchedulerNs3::FTResources &totAssigned, double timeWindow) |
Update the PF metric for uplink. | |
![]() | |
NrMacSchedulerUeInfo ()=delete | |
Default Constructor (deleted) | |
NrMacSchedulerUeInfo (uint16_t rnti, BeamId beamId, const GetRbPerRbgFn &fn) | |
Create a new UE representation. | |
virtual | ~NrMacSchedulerUeInfo () |
~NrMacSchedulerUeInfo deconstructor | |
uint8_t | GetDlMcs () const |
Get the downlink MCS, given by the wideband CQI, or the sub-band CQIs of the currently allocated RBGs, if available. | |
uint32_t | GetTotalDlBuffer () const |
void | ReleaseLC (uint8_t lcid) |
virtual void | UpdateDlMetric () |
Update DL metrics after resources have been assigned. | |
virtual void | UpdateUlMetric () |
Update UL metrics after resources have been assigned. | |
Static Public Member Functions | |
static bool | CompareUeWeightsDl (const NrMacSchedulerNs3::UePtrAndBufferReq &lue, const NrMacSchedulerNs3::UePtrAndBufferReq &rue) |
comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second. | |
static bool | CompareUeWeightsUl (const NrMacSchedulerNs3::UePtrAndBufferReq &lue, const NrMacSchedulerNs3::UePtrAndBufferReq &rue) |
comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second. | |
![]() | |
static NrMacHarqVector & | GetDlHarqVector (const UePtr &ue) |
GetDlHarqVector. | |
static std::unordered_map< uint8_t, LCGPtr > & | GetDlLCG (const UePtr &ue) |
GetDlLCG. | |
static uint8_t & | GetDlMcs (const UePtr &ue) |
GetDlMcs. | |
static std::vector< uint16_t > & | GetDlRBG (const UePtr &ue) |
GetDlRBG. | |
static std::vector< uint8_t > & | GetDlSym (const UePtr &ue) |
GetDlSym. | |
static uint32_t & | GetDlTBS (const UePtr &ue) |
GetDlTBS. | |
static NrMacHarqVector & | GetUlHarqVector (const UePtr &ue) |
GetUlHarqVector. | |
static std::unordered_map< uint8_t, LCGPtr > & | GetUlLCG (const UePtr &ue) |
GetUlLCG. | |
static uint8_t & | GetUlMcs (const UePtr &ue) |
GetUlMcs. | |
static std::vector< uint16_t > & | GetUlRBG (const UePtr &ue) |
GetUlRBG. | |
static std::vector< uint8_t > & | GetUlSym (const UePtr &ue) |
GetUlSym. | |
static uint32_t & | GetUlTBS (const UePtr &ue) |
GetUlTBS. | |
static void | PrintLcInfo (uint16_t ue, uint8_t lcgId, uint8_t lcId, uint8_t cqi, uint8_t P, uint8_t minP) |
Prints information related to the QCI of a UEs LC. | |
Public Attributes | |
float | m_alpha {0.0} |
PF fairness metric. | |
double | m_avgTputDl {0.0} |
Average throughput in downlink during all the slots. | |
double | m_avgTputUl {0.0} |
Average throughput in uplink during all the slots. | |
double | m_currTputDl {0.0} |
Current slot throughput in downlink. | |
double | m_currTputUl {0.0} |
Current slot throughput in uplink. | |
double | m_lastAvgTputDl {0.0} |
Last average throughput in downlink. | |
double | m_lastAvgTputUl {0.0} |
Last average throughput in uplink. | |
double | m_potentialTputDl {0.0} |
double | m_potentialTputUl {0.0} |
![]() | |
BeamId | m_beamId |
Beam ID of the UE (kept updated as much as possible by MAC) | |
Ptr< NrAmc > | m_dlAmc |
AMC instance of scheduler associated with DL. | |
CqiInfo | m_dlCqi |
DL CQI information. | |
NrMacHarqVector | m_dlHarq |
HARQ process vector for DL. | |
std::unordered_map< uint8_t, LCGPtr > | m_dlLCG |
DL LCG. | |
uint8_t | m_dlMcs {0} |
DL MCS. | |
uint32_t | m_dlMRBRetx {0} |
Ptr< const ComplexMatrixArray > | m_dlPrecMats {nullptr} |
DL Precoding matrices. | |
uint8_t | m_dlRank {1} |
DL rank (number of MIMO layers) | |
std::vector< uint16_t > | m_dlRBG |
DL Resource Block Group assigned in this slot. | |
std::vector< SbMcsInfo > | m_dlSbMcsInfo |
std::vector< uint8_t > | m_dlSym |
Corresponding symbol of m_dlRBG in this slot. | |
uint32_t | m_dlTbSize {0} |
std::optional< uint8_t > | m_fhMaxMcsAssignable |
Maximum DL MCS assignable due to FH limitations. | |
McsCsiSource | m_mcsCsiSource |
Source of MCS computation based on CSI feedback. | |
std::vector< uint8_t > | m_rbgToSb |
Precomputed RBG to SB mapping. | |
uint16_t | m_rnti {0} |
RNTI of the UE. | |
uint32_t | m_srsOffset {0} |
SRS offset. | |
uint32_t | m_srsPeriodicity {0} |
SRS periodicity. | |
uint8_t | m_startMcsDlUe {0} |
Starting DL MCS to be used. | |
Ptr< NrAmc > | m_ulAmc |
AMC instance of scheduler associated with UL. | |
CqiInfo | m_ulCqi |
UL CQI information. | |
NrMacHarqVector | m_ulHarq |
HARQ process vector for UL. | |
std::unordered_map< uint8_t, LCGPtr > | m_ulLCG |
UL LCG. | |
uint8_t | m_ulMcs {0} |
UL MCS. | |
uint32_t | m_ulMRBRetx {0} |
Ptr< const ComplexMatrixArray > | m_ulPrecMats {nullptr} |
UL Precoding matrices. | |
uint8_t | m_ulRank {1} |
UL rank (number of MIMO layers) | |
std::vector< uint16_t > | m_ulRBG |
UL Resource Block Group assigned in this slot. | |
std::vector< uint8_t > | m_ulSym |
Corresponding symbol of m_ulRBG in this slot. | |
uint32_t | m_ulTbSize {0} |
Additional Inherited Members | |
![]() | |
typedef std::function< NrMacHarqVector &(const UePtr &ue)> | GetHarqVectorFn |
typedef std::function< std::unordered_map< uint8_t, LCGPtr > &(const UePtr &ue)> | GetLCGFn |
typedef std::function< uint32_t()> | GetRbPerRbgFn |
enum class | McsCsiSource { AVG_MCS , AVG_SPEC_EFF , AVG_SINR , WIDEBAND_MCS } |
![]() | |
uint32_t | GetNumRbPerRbg () const |
Retrieve the number of RB per RBG. | |
UE representation for a proportional fair scheduler.
The representation stores the current throughput, the average throughput, and the last average throughput, as well as providing comparison functions to sort the UEs in case of a PF scheduler.
Definition at line 23 of file nr-mac-scheduler-ue-info-pf.h.
|
inline |
NrMacSchedulerUeInfoPF constructor.
rnti | RNTI of the UE |
beamId | Beam ID of the UE |
fn | A function that tells how many RB per RBG |
Definition at line 32 of file nr-mac-scheduler-ue-info-pf.h.
void ns3::NrMacSchedulerUeInfoPF::CalculatePotentialTPutDl | ( | const NrMacSchedulerNs3::FTResources & | assignableInIteration | ) |
Calculate the Potential throughput for downlink.
assignableInIteration | resources assignable |
Definition at line 55 of file nr-mac-scheduler-ue-info-pf.cc.
References ns3::NrMacSchedulerUeInfo::GetDlMcs(), ns3::NrMacSchedulerUeInfo::GetNumRbPerRbg(), m_avgTputDl, ns3::NrMacSchedulerUeInfo::m_dlAmc, ns3::NrMacSchedulerUeInfo::m_dlRank, m_lastAvgTputDl, m_potentialTputDl, ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, ns3::NrMacSchedulerUeInfo::m_rnti, and ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym.
void ns3::NrMacSchedulerUeInfoPF::CalculatePotentialTPutUl | ( | const NrMacSchedulerNs3::FTResources & | assignableInIteration | ) |
Calculate the Potential throughput for uplink.
assignableInIteration | resources assignable |
Definition at line 70 of file nr-mac-scheduler-ue-info-pf.cc.
References ns3::NrMacSchedulerUeInfo::GetNumRbPerRbg(), m_avgTputUl, m_lastAvgTputUl, m_potentialTputUl, ns3::NrMacSchedulerNs3::PointInFTPlane::m_rbg, ns3::NrMacSchedulerUeInfo::m_rnti, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, ns3::NrMacSchedulerUeInfo::m_ulAmc, ns3::NrMacSchedulerUeInfo::m_ulMcs, and ns3::NrMacSchedulerUeInfo::m_ulRank.
|
inlinestatic |
comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.
lue | Left UE |
rue | Right UE |
The PF metric is calculated as following:
Alpha is a fairness metric. Please note that the throughput is calculated in bit/symbol.
Definition at line 139 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by ns3::NrMacSchedulerOfdmaPF::GetUeCompareDlFn(), and ns3::NrMacSchedulerTdmaPF::GetUeCompareDlFn().
|
inlinestatic |
comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if the first argument is less than (i.e. is ordered before) the second.
lue | Left UE |
rue | Right UE |
The PF metric is calculated as following:
Alpha is a fairness metric. Please note that the throughput is calculated in bit/symbol.
Definition at line 168 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by ns3::NrMacSchedulerOfdmaPF::GetUeCompareUlFn(), and ns3::NrMacSchedulerTdmaPF::GetUeCompareUlFn().
|
inlineoverridevirtual |
Reset the DL avg Th to the last value.
Reimplemented from ns3::NrMacSchedulerUeInfo.
Definition at line 75 of file nr-mac-scheduler-ue-info-pf.h.
References m_avgTputDl, m_lastAvgTputDl, and ns3::NrMacSchedulerUeInfo::ResetDlMetric().
|
inlineoverridevirtual |
Reset DL PF scheduler info.
Set the last average throughput to the current average throughput, and zeroes the average throughput as well as the current throughput.
It calls also NrMacSchedulerUeInfo::ResetDlSchedInfo.
Reimplemented from ns3::NrMacSchedulerUeInfo.
Definition at line 46 of file nr-mac-scheduler-ue-info-pf.h.
References m_avgTputDl, m_currTputDl, m_lastAvgTputDl, m_potentialTputDl, and ns3::NrMacSchedulerUeInfo::ResetDlSchedInfo().
|
inlineoverridevirtual |
Reset the UL avg Th to the last value.
Reimplemented from ns3::NrMacSchedulerUeInfo.
Definition at line 84 of file nr-mac-scheduler-ue-info-pf.h.
References m_avgTputUl, m_lastAvgTputUl, and ns3::NrMacSchedulerUeInfo::ResetUlMetric().
|
inlineoverridevirtual |
Reset UL PF scheduler info.
Set the last average throughput to the current average throughput, and zeroes the average throughput as well as the current throughput.
It also calls NrMacSchedulerUeInfo::ResetUlSchedInfo.
Reimplemented from ns3::NrMacSchedulerUeInfo.
Definition at line 63 of file nr-mac-scheduler-ue-info-pf.h.
References m_avgTputUl, m_currTputUl, m_lastAvgTputUl, m_potentialTputUl, and ns3::NrMacSchedulerUeInfo::ResetUlSchedInfo().
void ns3::NrMacSchedulerUeInfoPF::UpdateDlPFMetric | ( | const NrMacSchedulerNs3::FTResources & | totAssigned, |
double | timeWindow | ||
) |
Update the PF metric for downlink.
totAssigned | the resources assigned |
timeWindow | the time window |
Updates m_currTputDl and m_avgTputDl by keeping in consideration the assigned resources (in form of TBS) and the time window. It gets the tbSize by calling NrMacSchedulerUeInfo::UpdateDlMetric.
Definition at line 15 of file nr-mac-scheduler-ue-info-pf.cc.
References m_avgTputDl, m_currTputDl, ns3::NrMacSchedulerUeInfo::m_dlTbSize, m_lastAvgTputDl, m_potentialTputDl, ns3::NrMacSchedulerUeInfo::m_rnti, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, and ns3::NrMacSchedulerUeInfo::UpdateDlMetric().
void ns3::NrMacSchedulerUeInfoPF::UpdateUlPFMetric | ( | const NrMacSchedulerNs3::FTResources & | totAssigned, |
double | timeWindow | ||
) |
Update the PF metric for uplink.
totAssigned | the resources assigned |
timeWindow | the time window |
Updates m_currTputUl and m_avgTputUl by keeping in consideration the assigned resources (in form of TBS) and the time window. It gets the tbSize by calling NrMacSchedulerUeInfo::UpdateUlMetric.
Definition at line 35 of file nr-mac-scheduler-ue-info-pf.cc.
References m_avgTputUl, m_currTputUl, m_lastAvgTputUl, m_potentialTputUl, ns3::NrMacSchedulerUeInfo::m_rnti, ns3::NrMacSchedulerNs3::PointInFTPlane::m_sym, ns3::NrMacSchedulerUeInfo::m_ulTbSize, and ns3::NrMacSchedulerUeInfo::UpdateUlMetric().
float ns3::NrMacSchedulerUeInfoPF::m_alpha {0.0} |
PF fairness metric.
Definition at line 187 of file nr-mac-scheduler-ue-info-pf.h.
double ns3::NrMacSchedulerUeInfoPF::m_avgTputDl {0.0} |
Average throughput in downlink during all the slots.
Definition at line 183 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutDl(), ResetDlMetric(), ResetDlSchedInfo(), and UpdateDlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_avgTputUl {0.0} |
Average throughput in uplink during all the slots.
Definition at line 190 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutUl(), ResetUlMetric(), ResetUlSchedInfo(), and UpdateUlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_currTputDl {0.0} |
Current slot throughput in downlink.
Definition at line 182 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by ResetDlSchedInfo(), and UpdateDlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_currTputUl {0.0} |
Current slot throughput in uplink.
Definition at line 189 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by ResetUlSchedInfo(), and UpdateUlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_lastAvgTputDl {0.0} |
Last average throughput in downlink.
Definition at line 184 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutDl(), ResetDlMetric(), ResetDlSchedInfo(), and UpdateDlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_lastAvgTputUl {0.0} |
Last average throughput in uplink.
Definition at line 191 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutUl(), ResetUlMetric(), ResetUlSchedInfo(), and UpdateUlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_potentialTputDl {0.0} |
Potential throughput in downlink in one assignable resource (can be a symbol or a RBG)
Definition at line 185 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutDl(), ResetDlSchedInfo(), and UpdateDlPFMetric().
double ns3::NrMacSchedulerUeInfoPF::m_potentialTputUl {0.0} |
Potential throughput in uplink in one assignable resource (can be a symbol or a RBG)
Definition at line 192 of file nr-mac-scheduler-ue-info-pf.h.
Referenced by CalculatePotentialTPutUl(), ResetUlSchedInfo(), and UpdateUlPFMetric().