为什么 buffer 越大传输效率越低

先看 从边际效益递减看 buffer 中挤占带宽 中的两个模型:

  • E1 = inflight_prop - inflight_buff: y = 2 t x − b x a − x y=2tx-\dfrac{bx}{a-x} y=2txaxbx
  • E2 = bw / delay: y = a x − x 2 b + t a − t x y=\dfrac{ax-x^2}{b+ta-tx} y=b+tatxaxx2

其中,E 为效益,编号 1,2 区分两个模型,公式中均以 y 表示,x 表示一条流的有效带宽,a 为瓶颈链路总带宽,b 为 buffer 已填充大小,c 为单向传播时延。

首先,固定 a 和 c,控制 b,动图如下:
在这里插入图片描述

一目了然:

  • buffer 填充越大,E1 和 E2 最大值绝对值均单调减小,取最大值时的 x 单调减小。

简单解释一下,E 的绝对值减小意味着效益度量值减小,即低效的意思,而最大值时的 x 减小意味着收益(注意和效益的区别)在减小。

结论是,buffer 越大,能效越低,收益越低。

现在固定 a,b,控制 c:
在这里插入图片描述

一目了然:

  • c 越大,E1,E2 取得最大值时的 x 单调递增;
  • c 越大,E1 最大值单调递增,E2 最大值单调递减。

简单解释一下,c 越大,rtt 越大,管道长短视为固有属性,E1 最大值同步增加意味着 c 越大,挤占 buffer 的收益带来的总效能越大,这件事值得做,反之,c 越小,小 rtt 链路挤占 buffer 就是相对出大力而不讨好了。

对 E2 而言,c 越大,E2 最大值反而越小,意味着越长的链路挤占 buffer 的收益越被淹没,属于出大力亦不讨好。

但无论 E1 还是 E2,c 越大,取得最大值时的 x 都单调递增,意味着如果链路过长,有 buffer 就去挤占吧。

综上:

  • buffer 越大,能效越低,收益越低;
  • 链路越长,挤占 buffer 收益明显,但总效益被淹没;
  • 链路越短,挤占 buffer 越困难;
  • 如果 buffer 已部署,不要谦让。

看看,是不是所有 reno,cubic,vegas,bbr 的配置部署建议都在里面了。但总的结论还不是这,总的结论是,不要寄希望于增加 buffer 以提高传输效率,buffer 越大越低效,违反直觉了吧,这就对了。特别针对数据中心,小 rtt 短肥管道,看上面的动图,孰轻孰重。

sender 收着点,姿势对了才舒服。

浙江温州皮鞋湿,下雨进水不会胖。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值