Update powerqcn variables in rdma-hw and rdma-queue-pair classes

This commit is contained in:
Yupeng Chen 2024-04-28 14:34:24 +08:00
parent b0ad890be2
commit 3ac195043f
No known key found for this signature in database
GPG Key ID: BB03A97DB67D4C16
4 changed files with 13 additions and 7 deletions

View File

@ -2197,11 +2197,11 @@ RdmaHw::HandleAckPowerQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> distr(0, 1000);
uint64_t prev_rtt = powerqcn_prev_rtt == 0 ? rtt : powerqcn_prev_rtt;
if (powerqcn_last_update < ch.ack.ih.GetTs())
uint64_t prev_rtt = qp->powerqcn.prev_rtt == 0 ? rtt : qp->powerqcn.prev_rtt;
if (qp->powerqcn.prev_rtt < ch.ack.ih.GetTs())
{
powerqcn_prev_rtt = rtt;
powerqcn_last_update = Simulator::Now().GetTimeStep();
qp->powerqcn.prev_rtt = rtt;
qp->powerqcn.last_update = Simulator::Now().GetTimeStep();
}
double rtt_gradient = (rtt - prev_rtt) / rtt_qcn_tmin;
@ -2222,7 +2222,7 @@ RdmaHw::HandleAckPowerQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch
}
bool gradient_ecn = false;
if (rtt_gradient <= -0.25)
if (rtt_gradient <= 0.25)
{
gradient_ecn = false;
}

View File

@ -239,8 +239,6 @@ class RdmaHw : public Object
* PowerQCN
* Improve RTT-QCN by using gradient alongside RTT
********************/
uint64_t powerqcn_prev_rtt = 0; // previous RTT, used to calculate gradient
uint64_t powerqcn_last_update = 0; // last time we update prev_rtt
void HandleAckPowerQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch);
};

View File

@ -88,6 +88,9 @@ RdmaQueuePair::RdmaQueuePair(uint16_t pg,
swift.m_real_win = 10000.0;
rttqcn.curr_win = 50000.0;
powerqcn.last_update = 0;
powerqcn.prev_rtt = 0;
}
void

View File

@ -154,6 +154,11 @@ class RdmaQueuePair : public Object
double curr_win;
} rttqcn;
struct {
uint64_t prev_rtt;// previous RTT, used to calculate gradient
uint64_t last_update;// last time we update prev_rtt
} powerqcn;
/***********
* methods
**********/