add "real" window for swift

This commit is contained in:
cyp0633 2024-04-07 10:29:07 +08:00
parent f7b62f2725
commit d55479fc2f
Signed by: cyp0633
GPG Key ID: CF90D09FB1FDCE45
4 changed files with 13 additions and 7 deletions

View File

@ -44,13 +44,13 @@ PINT_PROB 1.0
SWIFT_AI 1000
SWIFT_BETA 0.8
SWIFT_MAX_MDF 0.5
SWIFT_BASE_TARGET 60000
SWIFT_HOP_SCALE 30000
SWIFT_BASE_TARGET 5000
SWIFT_HOP_SCALE 1000
SWIFT_FS_MAX_CWND 0.1
SWIFT_FS_MIN_CWND 0.000300
SWIFT_FS_RANGE 0.000300
SWIFT_MIN_CWND 0.001
SWIFT_MAX_CWND 800000
SWIFT_MAX_CWND 30000
SWIFT_TARGET_ENDPOINT_DELAY 1000000
ACK_HIGH_PRIO 0

View File

@ -2047,21 +2047,23 @@ RdmaHw::HandleAckSwift(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch)
{
qp->swift.m_pacing_delay = rtt * 1.0 / cwnd;
qp->SetWin(INT_MAX); // to make sure sending is only pacing-bound, but not window-bound
qp->swift.m_real_win = cwnd;
qp->UpdatePacing();
}
else
{
qp->swift.m_pacing_delay = 0;
qp->SetWin((uint32_t)cwnd);
qp->swift.m_real_win = cwnd;
}
std::cout << "[SWIFT] cwnd: " << cwnd << std::endl;
std::cout << "[SWIFT] cwnd: " << cwnd << ", delay: " << fabric_delay << std::endl;
}
// calculate target fabric delay
uint64_t
RdmaHw::TargetFabDelaySwift(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch) const
{
double fcwnd = qp->m_win;
double fcwnd = qp->swift.m_real_win;
auto num_hops = ch.ack.ih.swift.nhop;
auto alpha =
swift_fs_range / (std::pow(swift_fs_min_cwnd, -0.5) - std::pow(swift_fs_max_cwnd, -0.5));
@ -2080,7 +2082,7 @@ RdmaHw::GetCwndSwift(Ptr<RdmaQueuePair> qp,
uint64_t curr_delay) const
{
bool canDecrease = ch.ack.ih.swift.ts > qp->swift.m_t_last_decrease.GetNanoSeconds();
double cwnd = qp->m_win;
double cwnd = qp->swift.m_real_win;
if (curr_delay < target_delay)
{
if (cwnd >= 1)

View File

@ -85,6 +85,7 @@ RdmaQueuePair::RdmaQueuePair(uint16_t pg,
swift.m_curRate = 0;
swift.m_retransmit_cnt = 0;
swift.m_pacing_delay = 0;
swift.m_real_win = 0;
}
void

View File

@ -141,7 +141,10 @@ class RdmaQueuePair : public Object
Time m_t_last_decrease;
// pacing delay, i.e. sending interval
uint64_t m_pacing_delay;
// num of acked packets
// real window size
//
// swift sets window size to INT_MAX to avoid packet capping during pacing (win<1)
double m_real_win;
} swift;
/***********