交换机需要多大 buffer

news2024/11/24 12:59:25

有点违背直觉,但是真事儿,交换机过境的流越多,所需 buffer 越小,这是为什么?

范氏(范雅各布森,van jacobson)管道的 aimd 流建议 buffer_size 为 bdp,这很容易理解,因为 aimd 流最小 cwnd 为最大 cwnd 的 1/2,为保持管道持续满载,1/2 * cwnd 填满管道即可,即 1/2 * cwnd = bdp,因此 buffer_size = cwnd_max = 2 * bdp。

但这是单流的推导,多流共享 buffer 场景下是否适用还要继续推导。若 buffer 配置尾丢(tail drop),多流全局同步,范氏 style 推导依然适用,但若 buffer 配置为 red(random early detection) or codel,就要更复杂些,我先给出一个极端些的直感,再稍微详细分析随机异步流共享 buffer 场景。
所谓的极端即所有流 “均匀摊布” 在时间轴:
在这里插入图片描述

如上图两条流均匀摊布场景,两条流 cwnd 之和在其中一流 md 后即 t + 1 时刻获得,此时它们的 cwnd 之和为 Smin = 1 / 2w + (1 / 2 + (1 / 2) * (1 / 2))w,为保持管道满载,只需要让 Smin = bdp,而 buffer 的大小保持为 Smax - Smin 即可。

按此推广到 n 条流均匀摊布,可得:

S m i n = 1 2 w + ( 1 2 + 1 2 ⋅ 1 n ) w + ( 1 2 + 1 2 ⋅ 2 n ) w + . . . + ( 1 2 + 1 2 ⋅ n − 1 n ) w S_{min}=\dfrac{1}{2}w+(\dfrac{1}{2}+\dfrac{1}{2}\cdot\dfrac{1}{n})w+(\dfrac{1}{2}+\dfrac{1}{2}\cdot\dfrac{2}{n})w+...+(\dfrac{1}{2}+\dfrac{1}{2}\cdot\dfrac{n-1}{n})w Smin=21w+(21+21n1)w+(21+21n2)w+...+(21+21nn1)w

化简可得:

S m i n = n 2 ⋅ w = b d p , w = b d p ⋅ 2 n S_{min}= \dfrac{n}{2}\cdot w = bdp,w = bdp\cdot\dfrac{2}{n} Smin=2nw=bdpw=bdpn2

而 Smax - Smin = (1 / 2)w,故 buffer_size = bdp / n。

这意味着 n 条流均匀摊布时,只需要保持 bdp / n 大小的 buffer 就能保持管道满载。

buffer 按流数量缩小难道这不会造成丢包加剧?持这种执念的人还是将 buffer 当带宽了,这是错误的。如果 n 条流共享带宽,目标是 n 条流均分带宽,不是分享 buffer,这意味着它们 md 后 cwnd 必降到 bdp 以下,保持管道满载意思是 cwnd 总和维持在 bdp 以上,一条流 cwnd 降到 bdp 以下,总有流填充它空出的部分。

好,现在开始步入正题。

实际的统计复用场景中,每条流独立,多条流不可能均匀摊布,其 cwnd 之和属正态分布。n 条流 cwnd 之和,每条流相当于从 (1 / 2)w 到 w 抽样 cwnd,cwnd 属均匀分布,根据中心极限定理,cwnd 的和属正态分布,设 cwnd 抽样标准差 σ c w n d \sigma_{cwnd} σcwnd ,cwnd 之和标准差为 σ S \sigma_{S} σS ,则 ,则 ,则 n ⋅ σ c w n d 2 = σ S 2 n\cdot\sigma_{cwnd}^2=\sigma_{S}^2 nσcwnd2=σS2

每条流的 cwnd 值属于从 (1 / 2)w 到 w 的均匀分布,其标准差为 σ c w n d = w 2 12 \sigma_{cwnd}=\dfrac{w}{2\sqrt{12}} σcwnd=212 w,在 n 条流共存场景, w = Σ n w i n w=\dfrac{\Sigma^n w_i}{n} w=nΣnwi,因此 σ c w n d = w 2 12 = Σ n w i 2 12 n \sigma_{cwnd}=\dfrac{w}{2\sqrt{12}}=\dfrac{\Sigma^n w_i}{2\sqrt{12}n} σcwnd=212 w=212 nΣnwi,方差叠加可得:

σ S = n σ c w n d = Σ n w i 4 3 n = b d p + b u f f e r 4 3 n \sigma_S=\sqrt{n}\sigma_{cwnd}=\dfrac{\Sigma^nw_i}{4\sqrt{3}\sqrt{n}}=\dfrac{bdp+buffer}{4\sqrt{3}\sqrt{n}} σS=n σcwnd=43 n Σnwi=43 n bdp+buffer

而我们看上述表达式意味着什么:
在这里插入图片描述

给定一个 buffer,n 越大,覆盖 99% 可能性的有用 buffer 越少,buffer 随着 sqrt{n} 缩小, 整体上 buffer 被 n 往左边向 bdp 收缩。n 增大, σ \sigma σ 减小,要让 σ \sigma σ 减小,buffer 减小。

中心极限定理说的就是抽样越多钟形越高越细,抽样越多的意思就是 n 越大,随着 n 的增加,Σw 倾向于收敛到非常细高的区域,极端情况,n 无穷大,σS = 0,buffer 则不再需要,无穷条流的锯齿被平滑到 bdp 边缘,刚刚恰好填满 bdp。

依本文论点,aimd 锯齿仅在端可观测到,在交换机 buffer 的统计复用环境,多流行为效果恰就是中心极限定理 cwnd 采样求和的体现,依据的是另一种动力学。bbr 等 cc 分析应依据这种统计动力学而不是端侧的 aimd 动力学。

是故,足够大的 buffer 给了共存流量足够的腾挪折腾空间,其 buffer 挤占动力学有利于公平收敛,但也不绝对。buffer 过大,真带不来收益,带来时延而已,若不必吸收统计波动,仅固定数目 aimd 流共存,如上分析,实在无需大 buffer,流越多,buffer 用量越少即可保持管道满载。但现网部署的交换机配置稍微大的 buffer 实属吸收统计波动,比如 incast 或特殊事件(比如直播在特定时间开始后的短突发),但即便是研发经理,恐怕也还是觉得任何场景下 buffer 越大越好吧。

约 12 年前,我说过一句话,“经理能扣篮,但不经常,也不绝对”,这实在就是量子力学的哥本哈根解释的解释,说经理不能扣篮是不准确的,因为经理扣篮的概率虽小,但不为 0。

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

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

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

相关文章

适合弱电行业的项目管理软件!找企智汇软件!

随着科技的不断发展,弱电行业对于项目管理的需求日益增强。为满足这一需求,企智汇推出了一款专为弱电行业打造的工程项目管理系统。 企智汇弱电行业工程项目管理系统以其专业性、高效性和智能性,赢得了业界的广泛认可。该系统深入融合了弱电…

pycharm配置conda解释器

假如我新建了一个conda虚拟环境,名为python3.8

Ubuntu设置nacos开机以单机模式自启动

首先,需要安装jdk Ubuntu 安装JDK 创建Systemd服务单元文件 sudo vim /etc/systemd/system/nacos.service按i进入编辑模式,写入下面信息 [Unit] Descriptionnacos server Afternetwork.target[Service] Typeforking Environment"JAVA_HOME/opt/j…

AI 芯片之战:开启智能新时代的关键角逐

在科技发展的浪潮中,一场围绕 AI 芯片的激烈竞争正在全球范围内如火如荼地展开。多家巨头纷纷投身其中,使得这场混战已然进入白热化阶段。 AI 芯片,作为推动人工智能发展的核心硬件,其作用举足轻重。它能够高效地处理海量的数据&a…

IODD简介(1)

目录 1 IODD简介 1.1基本概述 1.2主要结构 1.3 数据类型 1 IODD简介 1.1基本概述 IODD(IO Device Description)是一组文件,该文件的作用:被工程工具用于PLC或主站。用于识别、配置、定义用于过程数据交换的数据结构参数化和…

软件测试常见的面试题(46道)

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

Android的高校讲座预约管理系-计算机毕业设计源码21634

摘 要 本系统旨在设计和实现一个基于Android平台的高校讲座预约管理系统,以提供管理员和普通用户便捷的讲座预约服务和全面的管理功能。系统将包括在线讲座发布、讲座预约、座位安排、签到信息记录等功能模块,旨在提高高校讲座活动的组织效率和用户体验。…

项目管理进阶之PDM

前言 项目管理进阶上新啦! 今天博主带领大家认识一个项目经理必须掌握的好工具,好伙伴:PDM,即紧前关系绘图法。 那么接下来,先让我们一起安静下来,尝试做如下思考: 作为一个PM,如…

GPT的在线智能助考系统的设计-计算机毕业设计源码00068

摘要 随着人工智能技术的快速发展,智能辅助学习系统在教育领域日益受到重视。本研究旨在基于GPT构建在线智能助考系统,结合先进的自然语言处理技术,为用户提供智能问答、模拟考试、资源分享、交流论坛等功能,旨在提升用户学习效率…

深入Java腹地:序列化与反序列化的奥秘探索

在Java的广阔天地中,序列化与反序列化机制如同桥梁,连接着程序运行时的对象状态与持久化存储或网络传输之间的鸿沟。它们不仅是Java对象持久化、网络通信以及远程方法调用(RMI)等关键技术的基础,也是理解Java语言深层次…

vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决

直接上图,如下图,数组中出现__ob__: Observer属性,导致无法取值。 解决方案为:JSON.parse(JSON.stringify(数组变量名))深拷贝数组,重新生成一个可枚举数组。 // 处理代码如let tempIds JSON.parse(JSON.stringify(i…

摄像机反求跟踪软件/插件 Mocha Pro 2024 v11.0.2 CE Win

AE/PR/OFX/达芬奇/AVX插件 | 摄像机反求跟踪软件Mocha Pro 2024 v11.0.2 CE Win-PR模板网 Mocha Pro 软件(插件),用于平面运动跟踪、3D跟踪、动态观察、对象移除、图像稳定和PowerMesh有机扭曲跟踪等功能。整合了SynthEyes核心的3D跟踪算法,能够快速自动…

【有哪些GPU算力租用平台值得推荐】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

MySQL数据库数据迁徙:从本地到Linux服务器

"男人的浪漫,绝对是拥有一台属于自己的服务器" MySQL数据库数据迁徙就两步:本地导出和服务器导入。 本地导出 本地导出的时候,需要注意你的CMD命令行必须是以管理员身份运行。如果你的计算机找不到mysqldump这个命令,…

告别烦人的捆绑软件!一键获取真正纯净系统!

很多用户反映自己下载到的纯净版系统,总是携带着各种各样的捆绑软件,特别影响自己的操作体验感,想知道哪里才有真正纯净的操作系统?以下系统之家小编给大家分享做到真正纯净的电脑操作系统。这些系统经过优化,去除乱七…

无忧易售功能:刊登页面文本翻译,无缝对接全球买家

每一个词语,每一句话,都承载着产品的灵魂和品牌的故事,无忧易售的刊登页面文本翻译服务,一键操作即可将你的产品介绍、详情或广告文案转化为多语言版本,轻松管理,高效发布。 一、Allegro、OZON、Coupang、…

深度Q网络(DQN)算法技术博客

深度Q网络(DQN)是一种将深度学习与强化学习相结合的算法,用于解决高维状态空间的强化学习问题。本文将详细介绍DQN算法的基本原理,关键公式以及具体的代码实现。 一、DQN算法的基本原理 DQN算法是Q学习的一种扩展,利…

昇思25天学习打卡营第7天|保存与加载

Python语言 AI框架:Mindspore 1.模型构建 class Network(nn.Cell):def __init__(self):super().__init__()self.flatten nn.Flatten()self.dense_relu_sequential nn.SequentialCell(nn.Dense(28*28, 512, weight_init"normal", bias_init"zeros…

确认下单:购物车页面点击 去结算 按钮发起两个请求trade(显示购物车的商品信息和计算商品的总金额)findUserAddressList

文章目录 1、确认下单:购物车页面点击去结算1.1、在OrderController类中创建 trade 方法1.2、在CartController类中创建 checkedCartInfos1.3、CartServiceImpl 实现 checkedCartInfos的业务功能1.4、在service-cart-client模块下定义远程openFeign接口1.5、在SpzxO…

vue-org-tree搜索到对应项高亮展开

效果图&#xff1a; 代码&#xff1a; <template><div class"AllTree"><el-form :inline"true" :model"formInline" class"demo-form-inline"><el-form-item><el-input v-model"formInline.user&quo…