bbr 是真不行

bbr 作为 mimd 实例如何收敛到公平请看 瓶颈带宽的公平收敛,但这只是公平收敛,并不是 buffer 收敛。

上午跟朋友讨论了一个有趣的问题,感觉有必要揭露一下 bbr 的 buffer 不收敛。若不是有 probertt,多流共享瓶颈链路场景下,无限 buffer 会被无限占领,说实话,仅靠 probebw 状态的 drain 阶段是无法 buffer 收敛的,本质原因说过好多次,只要挤 buffer,总能挤出 bandwidth,drain 掉的仅仅是 “1/4old_maxbwminrtt - 挤出的 bw” 之外的 inflight。

都在下图(这是经典的收敛图,建议掌握):
在这里插入图片描述
话说能不能缩短 probertt 间隔,先看看 bbr 标准 怎么说:

An ProbeRTTInterval of 5 secs is short enough to allow quick convergence if traffic levels or routes change, but long enough so that interactive applications (e.g., Web, remote procedure calls, video chunks) often have natural silences or low-rate periods within the window where the flow’s rate is low enough for long enough to drain its queue in the bottleneck.

根本就没提 buffer,可能根本就没有认识到 bbr 只能靠 probertt 来收缩 buffer。那么缩短 probertt interval 呢?

标准里说了 interactive applications 的事,但大文件或持续流呢?probertt 期间,链路 queue 被 drain 掉了,可 host write buffer 却堆积了。bbr 隐约知道 probertt 状态下 drain 太狠了,严重影响端到端 p99 latency,在 bbr2/3 中将其妥协成了 50% inflight,然而这就无法保证尽力 drain 掉 queue 了。

bbr 开合跳幅度过大但却不协调,maxbw 和 minrtt 两个量正交,根本无法同时测的,它们之间 gap 越大,queue 就倾向于越大。maxbw 取 10-round filter,minrtt 则长达秒级,cwnd = 2 maxbw*minrtt 覆盖的动态范围过大,多亏了 probertt,否则绝对跑飞。

总之,bbr 是真不行,它吸引人的点在于它的高吞吐,显然这是依靠大摆王八拳获得的。bbr 有个结界,想公平收敛又 buffer 收缩,则趋向和 cubic 一致,吞吐自然也就下来了,而追求大吞吐,则必然放弃公平性和 buffer 收缩,靠猛挤就完了。

很多人发现 bbr3,bbr2 的吞吐不如 bbr1,人们升级 bbr 到 bbr3 的动机便不大了。

bbr 还是没有找对操作点,maxbw 和 minrtt 无法同时测得,那就别测了,best_E = max(bw / delay) 才是正确的操作点,它只有一个值。我们发现,当只有一条流的单流独享链路时,它等同于 bbr,无任何代价,不占任何 buffer,但多流共享链路时,best_E 的代价就是 buffer,而既然是 best_E,则 delay 倾向于更小。bbr 试图不付出任何代价收敛到 maxbw/minrtt,只能说是奢望,但在单流场景,它确实可以,因此 bbr 只是个单流算法。

姿势掌握了吗?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3030190.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

TC377TX 超声波雷达数据更新缓慢问题排查

1、问题表象 通过标定数据查看超声波雷达实时的距离大小,发现距离并没有实时更新,而是在实际值与默认值之间跳变,更新十分缓慢。   泊车功能必须依赖超声波雷达测距来实现,当雷达数据更新缓慢时,会导致泊车失败。 2、超声波雷达测距实现原理 MCU给超声波雷达发送一个40…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-消息可靠性

目录 确保消息的可靠性RabbitMQ 消息发送可靠性分析解决方案开启事务机制发送方确认机制单条消息处理消息批量处理 失败重试自带重试机制业务重试 RabbitMQ 消息消费可靠性如何保证消息在队列RabbitMQ 的消息消费,整体上来说有两种不同的思路:确保消费成…

Python专题:十、字典(1)

数据类型:字典,是一个集合性质的数据类型 字典的初始化 字典{关键字:数值} 新增元素 修改元素 字典元素访问 字典[关键字} in 操作符 字典关键字检测 字典元素遍历 ①遍历关键字

ESP32引脚入门指南(六):从理论到实践(UART)

ESP32开发板具有UART0、UART1和UART2三个UART接口,支持异步通信(RS232和RS485)和IrDA速率高达5mbps。这些接口提供了丰富的串行通信选项,允许与各种设备进行全双工通信。 UART接口概述与引脚配置 UART 是一种全双工通信协议,允许数据同时在…

JAVA获取application.yml配置文件的属性值

application.yml配置参数 方式一:使用Value方式(常用) 语法 Value("${配置文件中的key:默认值}") Value("${配置文件中的key}")方法1:使用的类文件中定义变量,直接使用变量 import org.springframework.beans.factory.an…

初阶数据结构—顺序表和链表

第一章:线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就…

STM32MP157_程序烧录

STM32MP157_程序烧录 说明: 1、使用emmc作为存储媒介,emmc是核心板上的存储颗粒空间有8GB 2、SD卡作为存储媒介,底板上有SD卡的插槽 emmc方式 软件:烧录软件使用STM32CubeProgrammer 连接线:硬件连接线使用type_c数据线…

哪里有高清视频素材软件?哪里有视频素材网站?

在这个视觉内容至关重要的时代,高质量的视频素材不仅能够增强信息传递的效果,还能显著提升观众的观看体验。接下来介绍的这些视频素材网站,将为您的创作提供广泛的选择,从本土到国际,满足您不同的需求和偏好。 1. 蛙学…

产品想在网络媒体上做营销宣传推广有什么好方法?

作为公司宣传负责人,我深知产品在网络媒体上的营销推广对于品牌建设和市场扩张的重要性。然而,在过去,当我们想要在网络媒体上推广产品时,我面临了诸多挑战和困境。 以前,我常常需要直接联系各大网络媒体,从海量的信息中筛选出合适的媒体平台,然后逐一发送邮件、拨打电话甚至亲…

部署达梦数据库主从配置详细操作DM8

服务器配置 主库 192.168.81.128 实例名 dm-1 从库 192.168.81.129 实例名 dm-2 以下安装部署主从服务器都操作 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 注意安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。…

Dbeaver network unavailable due to certificate issue

场景:出现在DBeaver连接数据库下载驱动的时候 解决: 别勾选就可以了

第十一讲:指针(3)

第十一讲:指针(3) 1.字符指针变量1.1存储一个字符1.2存储一个字符串1.3一个有趣的面试题 2.数组指针变量2.1什么是数组指针变量2.2数组指针变量的初始化 3.二维数组传参的本质4.函数指针变量4.1介绍函数指针变量4.2 两段有趣的代码4.2.1代码1…

debian10 (armbian) 配置CUPS 服务

更新apt apt-update安装相关软件 apt-get install ghostscript apt-get install dc apt-get install foomatic-db-engine apt-get install cups3.修改配置文件 nano /etc/cups/cupsd.conf Listen localhost:631改为 Listen 0.0.0.0:631 以下四段配置加入Allow All # Only li…

20240510每日后端---聊聊文件预览,doc,image,ppt转PDF预览

一、引入依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>crac…

如何使用visual vm和jstat进行远程监控

如何使用visual vm和jstat进行监控 安装visual vm 好像从jdk某个版本开始&#xff0c;jdk的bin目录下就不自带jvisualvm了&#xff0c;需要从官网下载一个visual vm。 打开visual vm Local是你本地的&#xff0c;无需多言。 先准备下必备的插件 如何通过visual vm观测远程…

数电——集成计数器

分析 &#xff08;1&#xff09;74161 4位同步&#xff08;cp相同&#xff09;二进制&#xff0c;模16&#xff08;2的4次方&#xff09; 逻辑符号 端口 D0,D1,D2,D3为输入信号 Q0,Q1,Q2,Q3为输出信号 RCO输出进位标志&#xff1a;记满16个数后&#xff0c;输出1 P,T 控…

今日arXiv最热NLP大模型论文:NAACL24实锤语言学对大模型“负优化”,抽象语义表示+思维链有损表现

大语言模型正以势不可挡的姿态席卷自然语言处理领域。在这个语言模型大显神威的时代&#xff0c;很多任务都转变为了端到端的文本生成任务。那么&#xff0c;在此之前我们苦心孤诣研究了几十年的语义表示&#xff0c;例如 AMR(抽象意义表示)&#xff0c;在这个时代里还能派上用…

使用GitLab自带的CI/CD功能在K8S集群里部署项目(四)

前置内容&#xff1a; 通过Docker Compose部署GitLab和GitLab Runner&#xff08;一&#xff09; 使用GitLab自带的CI/CD功能在本地部署项目&#xff08;二&#xff09; 使用GitLab自带的CI/CD功能在远程服务器部署项目&#xff08;三&#xff09; 一、K8S集群信息 节点名称…

Capl中的运算符

Capl中的运算符类似于C语言。由于capl中没有指针的概念&#xff0c;所以没有指针取值&#xff0c;取地址等运算符。 Capl中的运算符优先级同C语言一样&#xff0c;同样小括号可以 提升优先级。 1.算数运算符 整数类型之间的数据进行除法运算&#xff0c;结果一定是整数。如果…

【17-Ⅰ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…