MIMD可以收敛吗?显然不可以:
有趣且简单的是,如果不主动执行MD,假设无限buffer,瓶颈带宽反而可以收敛到公平:
理解这个很简单,设置
G
G
G为pacing rate增益,
a
a
a,
b
b
b分别为两条流的当前pacing rate,其中
a
>
b
a > b
a>b,且恰好
a
+
b
=
1
a+b=1
a+b=1,那么,当它们的pacing rate分别(注意是分别,不能同时)进行一轮增益后,由于buffer无限,它们buffer的占比即为瓶颈带宽的占比,它们的瓶颈带宽分别为
G
∗
a
1
+
(
G
−
1
)
∗
a
\dfrac{G*a}{1+(G-1)*a}
1+(G−1)∗aG∗a,
1
−
G
∗
a
1
+
(
G
−
1
)
∗
a
1-\dfrac{G*a}{1+(G-1)*a}
1−1+(G−1)∗aG∗a以及
1
−
G
∗
b
1
+
(
G
−
1
)
∗
b
1-\dfrac{G*b}{1+(G-1)*b}
1−1+(G−1)∗bG∗b,
G
∗
b
1
+
(
G
−
1
)
∗
b
\dfrac{G*b}{1+(G-1)*b}
1+(G−1)∗bG∗b。
两条流的收敛比例分别为
G
1
+
(
G
−
1
)
∗
a
\dfrac{G}{1+(G-1)*a}
1+(G−1)∗aG,
G
1
+
(
G
−
1
)
∗
b
\dfrac{G}{1+(G-1)*b}
1+(G−1)∗bG,注意分母,流A的收敛比分母更大,因此它的收敛比例更小。渐渐地,两条流就会收敛到公平,也就是上面的图。
但是,如果两条流的pacing rate同时增益,便无法收敛了,两者收敛比一致,这便是一种新的全局同步,实际使用中可以依靠随机化增益周期避免。
BBR其实就是以此为依据的一个rate-based算法,额外地,BBR增加了Drain操作,避免了buffer持续堆积,同时加入ProbeRTT主动收敛。若不如此,仅通过buffer也是可以被动收敛的。
buffer是一个大舞台,整队,表演,任何填进去的东西终将内卷成输出的瓶颈带宽,若要输出占比增加,就要多占buffer,这是一种罪恶。
浙江温州皮鞋湿,下雨进水不会胖。
原文链接: https://blog.csdn.net/dog250/article/details/123438220
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/405585
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!