Compare commits

...

4 Commits

Author SHA1 Message Date
Yupeng Chen 26e7991ec2
update workload script utilization 2024-04-24 00:12:26 +08:00
Yupeng Chen 9c697b02c7
add plot workload algorithms 2024-04-23 23:30:07 +08:00
Yupeng Chen a8b0a68b1d
update patched timely param 2024-04-23 20:27:42 +08:00
Yupeng Chen be4270a51c
update patched timely 2024-04-23 19:36:48 +08:00
5 changed files with 40 additions and 28 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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)