Compare commits
4 Commits
27cd3bddd8
...
26e7991ec2
Author | SHA1 | Date |
---|---|---|
Yupeng Chen | 26e7991ec2 | |
Yupeng Chen | 9c697b02c7 | |
Yupeng Chen | a8b0a68b1d | |
Yupeng Chen | be4270a51c |
|
@ -58,7 +58,7 @@ RTT_QCN_T_MAX 9000
|
|||
RTT_QCN_ALPHA 0.5
|
||||
RTT_QCN_BETA 0.25
|
||||
|
||||
PATCHED_TIMELY_RTTREF 500000
|
||||
PATCHED_TIMELY_RTTREF 3000
|
||||
PATCHED_TIMELY_BETA 0.008
|
||||
|
||||
ACK_HIGH_PRIO 0
|
||||
|
|
|
@ -59,7 +59,7 @@ RTT_QCN_T_MAX 13000
|
|||
RTT_QCN_ALPHA 0.5
|
||||
RTT_QCN_BETA 0.25
|
||||
|
||||
PATCHED_TIMELY_RTTREF 500000
|
||||
PATCHED_TIMELY_RTTREF 3000
|
||||
PATCHED_TIMELY_BETA 0.008
|
||||
|
||||
ACK_HIGH_PRIO 0
|
||||
|
|
|
@ -36,13 +36,13 @@ M=K*K
|
|||
# algs=list(["dcqcn", "powerInt", "hpcc", "powerDelay", "timely"])
|
||||
# algs=list(["powerInt", "hpcc", "powerDelay"])
|
||||
|
||||
algnames={}
|
||||
algnames["dcqcn"]="DCQCN"
|
||||
algnames["powerInt"]="PowerTCP-INT"
|
||||
algnames["hpcc"]="HPCC"
|
||||
algnames["powerDelay"]="PowerTCP-Delay"
|
||||
algnames["timely"]="TIMELY"
|
||||
algnames["DCTCP"]="DCTCP"
|
||||
# algnames={}
|
||||
# algnames["dcqcn"]="DCQCN"
|
||||
# algnames["powerInt"]="PowerTCP-INT"
|
||||
# algnames["hpcc"]="HPCC"
|
||||
# algnames["powerDelay"]="PowerTCP-Delay"
|
||||
# algnames["timely"]="TIMELY"
|
||||
# algnames["DCTCP"]="DCTCP"
|
||||
|
||||
|
||||
markers={}
|
||||
|
@ -52,6 +52,9 @@ markers["hpcc"]="^"
|
|||
markers["powerDelay"]="o"
|
||||
markers["timely"]="*"
|
||||
markers["DCTCP"]="."
|
||||
markers["patchedTimely"]="v"
|
||||
markers["swift"]=">"
|
||||
markers["rttqcn"]="<"
|
||||
|
||||
colors={}
|
||||
colors["dcqcn"]='brown'
|
||||
|
@ -60,6 +63,9 @@ colors["hpcc"]='blue'
|
|||
colors["powerDelay"]='green'
|
||||
colors["timely"]='cyan'
|
||||
colors["DCTCP"]='black'
|
||||
colors["patchedTimely"]="purple"
|
||||
colors["swift"]="orange"
|
||||
colors["rttqcn"]="magenta"
|
||||
|
||||
|
||||
|
||||
|
@ -82,7 +88,8 @@ REQ_SIZE=list(["1000000", "2000000", "4000000", "6000000", "8000000"])
|
|||
|
||||
req="0"
|
||||
query="0"
|
||||
algs=list(["dcqcn", "powerInt", "hpcc", "powerDelay", "timely"])
|
||||
# algs=list(["dcqcn", "powerInt", "hpcc", "powerDelay", "timely"])
|
||||
algs = list(["powerDelay","timely","patchedTimely","swift","rttqcn"])
|
||||
load="0.8"
|
||||
plt.rcParams.update({'font.size': 18})
|
||||
|
||||
|
@ -180,7 +187,8 @@ figlegend.savefig(plots_dir+'all-legend.pdf')
|
|||
|
||||
plt.rcParams.update({'font.size': 20})
|
||||
|
||||
algs=list([ "powerInt", "hpcc", "powerDelay"])
|
||||
# algs=list([ "powerInt", "hpcc", "powerDelay"])
|
||||
algs = list(["powerDelay","timely","patchedTimely","swift","rttqcn"])
|
||||
|
||||
req="0"
|
||||
query="0"
|
||||
|
@ -235,7 +243,8 @@ fig.savefig(plots_dir+'fct-shortLoad'+'.png')
|
|||
|
||||
#######################
|
||||
|
||||
algs=list([ "powerInt", "hpcc", "powerDelay"])
|
||||
# algs=list([ "powerInt", "hpcc", "powerDelay"])
|
||||
algs = list(["powerDelay","timely","patchedTimely","swift","rttqcn"])
|
||||
|
||||
req="0"
|
||||
query="0"
|
||||
|
|
|
@ -7,7 +7,8 @@ MIX_DUMP=$NS3/examples/PowerTCP/mix
|
|||
mkdir $RES_DUMP
|
||||
mkdir $MIX_DUMP
|
||||
mkdir $RES_RESULTS
|
||||
algs=(0 1 2 3 4 5 6 7 8)
|
||||
# algs=(0 1 2 3 4 5 6 7 8)
|
||||
algs=(3 4 6 7 8)
|
||||
|
||||
algNames=("dcqcn" "powerInt" "hpcc" "powerDelay" "timely" "dctcp" "patchedTimely" "swift" "rttqcn")
|
||||
CCMODE=(1 3 3 3 7 8 11 12 13)
|
||||
|
@ -67,7 +68,7 @@ for load in ${LOADS[@]};do
|
|||
|
||||
sleep 5
|
||||
# Check how many cores are being used.
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 38 ]];do
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 80 ]];do
|
||||
echo "Waiting for cpu cores.... $N-th experiment "
|
||||
sleep 60
|
||||
done
|
||||
|
@ -120,7 +121,7 @@ for req in ${REQ_RATE[@]};do
|
|||
|
||||
sleep 5
|
||||
# Check how many cores are being used.
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 38 ]];do
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 80 ]];do
|
||||
echo "Waiting for cpu cores.... $N-th experiment "
|
||||
sleep 60
|
||||
done
|
||||
|
@ -172,7 +173,7 @@ for query in ${REQ_SIZE[@]};do
|
|||
|
||||
sleep 5
|
||||
# Check how many cores are being used.
|
||||
while [[ $(ps aux|grep "evaluation-workload-optimized"|wc -l) -gt 38 ]];do
|
||||
while [[ $(ps aux|grep "evaluation-workload-optimized"|wc -l) -gt 80 ]];do
|
||||
echo "Waiting for cpu cores.... $N-th experiment "
|
||||
sleep 60
|
||||
done
|
||||
|
@ -193,7 +194,7 @@ echo "# FINISHED BURST-4 EXPERIMENTS #"
|
|||
echo "##########################################"
|
||||
|
||||
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 38 ]];do
|
||||
while [[ $(ps aux|grep "powertcp-evaluation-workload-optimized"|wc -l) -gt 80 ]];do
|
||||
echo "Waiting for cpu cores.... $N-th experiment "
|
||||
sleep 60
|
||||
done
|
||||
|
|
|
@ -1611,13 +1611,13 @@ RdmaHw::UpdateRatePower(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch,
|
|||
{
|
||||
max_c = qp->hp.u / m_targetUtil;
|
||||
new_rate = (0.9 * (qp->hp.m_curRate / max_c + DataRate("150Mbps")) +
|
||||
0.1 * qp->hp.m_curRate);
|
||||
0.1 * qp->hp.m_curRate); // gamma (EWMA param) = 0.9 for delay
|
||||
}
|
||||
else
|
||||
{
|
||||
max_c = qp->hp.u;
|
||||
new_rate = (0.7 * (qp->hp.m_curRate / max_c + DataRate("150Mbps")) +
|
||||
0.3 * qp->hp.m_curRate);
|
||||
0.3 * qp->hp.m_curRate); // gamma (EWMA param) = 0.7
|
||||
}
|
||||
if (new_rate < m_minRate)
|
||||
{
|
||||
|
@ -1800,14 +1800,17 @@ void
|
|||
RdmaHw::UpdateRatePatchedTimely(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch, bool us)
|
||||
{
|
||||
uint32_t next_seq = qp->snd_nxt;
|
||||
uint64_t rtt = Simulator::Now().GetTimeStep() - ch.ack.ih.ts;
|
||||
uint64_t currTime = Simulator::Now().GetNanoSeconds();
|
||||
uint64_t rtt = currTime - ch.ack.ih.ts;
|
||||
bool print = !us;
|
||||
if (qp->tmly.m_lastUpdateSeq != 0)
|
||||
{ // not first RTT
|
||||
int64_t new_rtt_diff = (int64_t)rtt - (int64_t)qp->tmly.lastRtt;
|
||||
qp->tmly.lastRtt = rtt;
|
||||
double rtt_diff = (1 - m_tmly_alpha) * qp->tmly.rttDiff + m_tmly_alpha * new_rtt_diff;
|
||||
double gradient = rtt_diff / m_tmly_minRtt;
|
||||
double weight;
|
||||
DataRate new_rate;
|
||||
double error;
|
||||
#if PRINT_LOG
|
||||
if (print)
|
||||
|
@ -1822,13 +1825,12 @@ RdmaHw::UpdateRatePatchedTimely(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHead
|
|||
if (rtt < m_tmly_TLow) // newRTT < Tlow
|
||||
{
|
||||
// rate = rate + rai
|
||||
ChangeRate(qp, qp->tmly.m_curRate + m_rai);
|
||||
new_rate = qp->tmly.m_curRate + m_rai;
|
||||
}
|
||||
else if (rtt > m_tmly_THigh) // newRTT > Thigh
|
||||
{
|
||||
// rate = rate * (1 - beta(1 - Thigh / new_rtt))
|
||||
ChangeRate(qp,
|
||||
qp->tmly.m_curRate * (1 - m_tmly_beta * (1 - (double)m_tmly_THigh / rtt)));
|
||||
new_rate = qp->tmly.m_curRate * (1 - m_tmly_beta * (1 - (double)m_tmly_THigh / rtt));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1845,12 +1847,12 @@ RdmaHw::UpdateRatePatchedTimely(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHead
|
|||
{
|
||||
weight = 2.0 * gradient + 0.5;
|
||||
}
|
||||
error = (rtt - m_ptmly_RttRef) * 1.0 / m_ptmly_RttRef;
|
||||
ChangeRate(qp,
|
||||
m_rai * (1 - weight) +
|
||||
qp->tmly.m_curRate * (1 - m_ptmly_beta * error * weight));
|
||||
error = ((double)rtt - (double)m_ptmly_RttRef) / m_ptmly_RttRef;
|
||||
new_rate =
|
||||
m_rai * (1 - weight) + qp->tmly.m_curRate * (1 - m_ptmly_beta * error * weight);
|
||||
}
|
||||
qp->tmly.m_curRate = std::max(m_minRate, std::min(qp->m_max_rate, qp->m_rate));
|
||||
qp->tmly.m_curRate = std::max(m_minRate, std::min(qp->m_max_rate, new_rate));
|
||||
ChangeRate(qp, new_rate);
|
||||
qp->tmly.rttDiff = rtt_diff;
|
||||
#if PRINT_LOG
|
||||
if (print)
|
||||
|
|
Loading…
Reference in New Issue