High-Precision-Congestion-Control
High-Precision-Congestion-Control copied to clipboard
About calculation formula for throughput
为了观察DCQCN算法的性能,我在simulation
目录下执行了以下命令:
python run.py --topo topology --trace flow --bw 25 --cc dcqcn --enable_trace 1
其中topology.txt
的内容为:
7 1 6
0
0 1 100Gbps 0.001ms 0
0 2 100Gbps 0.001ms 0
0 3 100Gbps 0.001ms 0
0 4 100Gbps 0.001ms 0
0 5 100Gbps 0.001ms 0
0 6 100Gbps 0.001ms 0
flow.txt
的内容为:
5
2 1 3 100 200000000 2
3 1 3 100 200000000 2
4 1 3 100 150000000 2
5 1 3 100 5000000 2
6 1 3 100 5000000 2
仿真结束后在mix目录下生成了mix_topology_flow_dcqcn.tr,之后使用trace_reader对该trace文件进行了解析。
为了知道不同flow的吞吐量,我采用的计算方式是:针对某一条flow,使用该flow对应的sender收到的相邻ACK报文的size差除以时间差。例如针对sender#3而言,以下片段展示了sender#3上收到的相邻ACK报文示例:
...
2052481446 n:3 1:0 0 Recv ecn:0 0b000101 0b000301 100 10000 A 0x00 3 178993000 0 60
...
2052481697 n:3 1:0 0 Recv ecn:0 0b000101 0b000301 100 10000 A 0x00 3 178994000 0 60
...
那么这一段时间的吞吐量为 (178994000B - 178993000B) * 8 / (2052481697ns - 2052481446ns) = 31.87Gbps
。
【问题1】为什么这种方法算出的吞吐量会比仿真命令中设置的网卡带宽(25Gbps)还大?
按照以上方式计算所有5条flow的吞吐量,如下所示:
【问题2】为什么吞吐量的变化情况不符合“先线速,然后迅速降低并趋于公平“的趋势?
【问题3】论文中的吞吐量计算公式是什么呢?