bbr 和 inflight 守恒的收敛原理

news2024/9/19 10:37:17

先看 bbr,以 2 条流 bw 收敛为例,微分方程组如下:

{ d x d t = C ⋅ g ⋅ x g ⋅ x + y − x   d y d t = C ⋅ g ⋅ y g ⋅ y + x − y \begin{cases} \dfrac{dx}{dt}=C\cdot\dfrac{g\cdot x}{g\cdot x+y}-x\\\ \dfrac{dy}{dt}=C\cdot\dfrac{g\cdot y}{g\cdot y+x}-y \end{cases} dtdx=Cgx+ygxx dtdy=Cgy+xgyy

它对应下面的递推式:

{ x t = C ⋅ g ⋅ x t − 1 g ⋅ x t − 1 + y t − 1   y t = C ⋅ g ⋅ y t − 1 g ⋅ y t − 1 + x t − 1 \begin{cases} x_{t}=C\cdot \dfrac{g\cdot x_{t-1}}{g\cdot x_{t-1}+y_{t-1}}\\\ y_{t}=C\cdot \dfrac{g\cdot y_{t-1}}{g\cdot y_{t-1}+x_{t-1}} \end{cases} xt=Cgxt1+yt1gxt1 yt=Cgyt1+xt1gyt1

很显然,通过递推式推导收敛性质非常方便:

  • 当 n 趋向于无穷大时,趋向于一个定值 X,趋向于一个定值 Y。

即 x[n],y[n] 不再变化时,递推式变成了方程组:

{ X = C ⋅ g ⋅ X g ⋅ X + Y Y = C ⋅ g ⋅ Y g ⋅ Y + X \begin{cases} X=C\cdot\dfrac{g\cdot X}{g\cdot X+Y}\\\\Y=C\cdot\dfrac{g\cdot Y}{g\cdot Y+X}\end{cases} X=CgX+YgXY=CgY+XgY

解得两条直线的交点: X = Y = C ⋅ g g + 1 X=Y=\dfrac{C\cdot g}{g+1} X=Y=g+1Cg
在这里插入图片描述

然而直接分析微分方程组更容易,并且可以直接从相图中看出所以然,这也是我为什么一直用微分方程组表达的原因。

若要收敛,则:

{ d x d t = 0 d y d t = 0 \begin{cases} \dfrac{dx}{dt}=0\\\\\dfrac{dy}{dt}=0\end{cases} dtdx=0dtdy=0 即: { x = C ⋅ g ⋅ x g ⋅ x + y y = C ⋅ g ⋅ y g ⋅ y + x \begin{cases} x=C\cdot\dfrac{g\cdot x}{g\cdot x+y}\\\\y=C\cdot\dfrac{g\cdot y}{g\cdot y+x}\end{cases} x=Cgx+ygxy=Cgy+xgy

看起来和递推式一模一样,但不同的是它可以看到收敛点是否稳定。我们画出相图,其实就是上面的图,两条直线将第一象限分割成了 4 个区域,我们分别分析在这 4 个区域中 d x d t \dfrac{dx}{dt} dtdx d y d t \dfrac{dy}{dt} dtdy 的符号即可,正号向右或向上,负号向左或向下,可得(为了画图方便,我将 g 放大到 2.5):
在这里插入图片描述

由此轻易获得稳定的不动点,在 g > 1 时, X = Y = C ⋅ g g + 1 X=Y=\dfrac{C\cdot g}{g+1} X=Y=g+1Cg,若 0 < g < 1,则 x,y 是发散的。

接下来分析收敛速度,我这里不需要确定精确的数值关系,只需要一个定性关系,获得收敛速度和增益 g 的关系,因此就不需要线性化矩阵和求解特征方程了,只需要观测方程:

f ( x ) = C ⋅ g ⋅ x g ⋅ x + K f(x)=C\cdot \dfrac{g\cdot x}{g\cdot x+K} f(x)=Cgx+Kgx

将 K 看作常量,当 g 增加时,f(x) 更快逼近 C,但 K 是一个与 f(x) 相对称的僵持量 f(y),因此当 g 增加时,f(x),f(y) 更快逼近稳定点 X = Y = C ⋅ g g + 1 X=Y=\dfrac{C\cdot g}{g+1} X=Y=g+1Cg

现在看 inflight 守恒算法,同样的假设下,微分方程组如下:

{ d x d t = C ⋅ x ⋅ R + I x ⋅ R + I + y ⋅ R + I − x   d y d t = C ⋅ y ⋅ R + I y ⋅ R + I + x ⋅ R + I − y \begin{cases} \dfrac{dx}{dt}=C\cdot\dfrac{ x\cdot R+I}{x\cdot R+I+y\cdot R+I}-x\\\ \dfrac{dy}{dt}=C\cdot\dfrac{y\cdot R+I}{y\cdot R+I+x\cdot R+I}-y \end{cases} dtdx=CxR+I+yR+IxR+Ix dtdy=CyR+I+xR+IyR+Iy

按照和 bbr 类似方法可得到方程组:
{ x 2 R + x y R + ( I − C ⋅ R ) x − C ⋅ I = 0 y 2 R + x y R + ( I − C ⋅ R ) y − C ⋅ I = 0 \begin{cases}x^2R + xyR + (I - C\cdot R)x - C\cdot I = 0\\y^2R + xyR + (I - C\cdot R)y - C\cdot I = 0\end{cases} {x2R+xyR+(ICR)xCI=0y2R+xyR+(ICR)yCI=0
在这里插入图片描述

依然定性分析收敛速度,随着 I 的增大, d x d t \dfrac{dx}{dt} dtdx d y d t \dfrac{dy}{dt} dtdy更快接近 1 ⋅ I 2 ⋅ I \dfrac{1\cdot I}{2\cdot I} 2I1I,收敛越快,但 buffer 占量也随之增加。

两条曲线的夹角越大,收敛越快,这个可以在相图中用几何方法证明

给出一个 inflt 守恒数值解的代码,3 流收敛:

C, R = 10, 5
def dx(a, b, c, r, I):
  d = C* (a*R + I) / ((b + c)*r + a*R + I) - a
  return d

...
  x1[i] = x1[i-1] + (dx(x1[i-1], x2[i-1], x3[i-1], r[i-1], I)) * dt
  x2[i] = x2[i-1] + (dx(x2[i-1], x1[i-1], x3[i-1], r[i-1], I)) * dt
  x3[i] = x3[i-1] + (dx(x3[i-1], x1[i-1], x2[i-1], r[i-1], I)) * dt
  r[i] = (x1[i-1]*R + x2[i-1]*R + x3[i-1]*R + 3*I) / C

我们看到了 bbr 和 inflt 守恒算法的殊途同归。

但且慢,bbr 应该用我前面那篇文章(bbr 微观建模)里的模型,如此一来增益 g 就不再是常量,而与共存流的相位差有关了,假如两个流的相位差为 0,则 g = 1,退化为同步 mimd,永不收敛,但在统计意义上,大量流共存场景,这种现象属实大概率只存在一个 probertt 周期,这就是 bbr 代码在结束 probertt 之后随机部署 probebw phase 的意义。

然而 inflt 守恒算法没有这么多边角事。此后我会把 bbr 1.25X bdp 收敛的过程如何均匀平铺在整个时间轴的细节给出。

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

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

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

相关文章

秋风送爽,夏意未央|VELO Prevail Revo坐垫,一骑绿动起来吧~

夏末秋初&#xff0c;当第一片落叶缓缓飘落&#xff0c;是时候骑上你的自行车&#xff0c;迎接新的季节啦。带上维乐Prevail Revo坐垫&#xff0c;因为它独树一帜地采用EVA与回收咖啡渣精制而成的轻量发泡提升了减震性能&#xff0c;可以让你的每一次骑行都充满意义。    “…

基于DS18B20的温度检测

前言 DS18B20是DALLAS半导体公司生产的单总线数字温度传感器&#xff0c;其输出的是数字信号&#xff0c;具有体积小&#xff0c;功耗低&#xff0c;抗干扰能力强&#xff0c;精度高的特点。 温度范围-55摄氏度至125摄氏度&#xff0c;在-10摄氏度至85摄氏度可以达到不超过 0.5…

Redis进阶(五):集群

1.概念 集群&#xff0c;从广义来讲&#xff1a;只要是多个机器&#xff0c;构成了分布式系统&#xff0c;都可以称为一个集群 狭义的集群&#xff1a;redis提供的集群模式&#xff0c;这个集群模式之下&#xff0c;主要是要解决存储空间不足的问题&#xff08;拓展存储空间&…

分歧时间估计与被子植物的年代-文献精读43

Ad fontes: divergence-time estimation and the age of angiosperms 回归本源&#xff1a;分歧时间估计与被子植物的年代 摘要 准确的分歧时间对于解释和理解谱系演化的背景至关重要。在过去的几十年里&#xff0c;有关冠被子植物推测的分子年龄&#xff08;通常估计为晚侏罗…

Python入门全解析丨Part3-Python的循环语句

(一)while循环的基础应用 一.while的条件 >>>需要是布尔类型&#xff0c;True表示继续循环&#xff0c;False表示循环结束 >>>需要设置循环终止的条件 >>>需要空格缩进 二.while循环使用举例 sum0; i1; while i <100:sumi;i1; print(f&quo…

华阳珠珍娘娘宝圣祖庙文化董事会隆重举办

中国广东省汕头市华阳珠珍宝圣祖庙文化董事会隆重举办海内外两岸护婴女神妈祖回娘家启动仪式&#xff01;风暖日丽的初春天&#xff0c;纷纷鼓乐赛华阳。护婴妙化在此地&#xff0c;莲岛故里起瓣香。这首诗是清代华阳乡人游殷享&#xff0c;时任湖北郧西县知县赞叹赛护婴&#…

VLAN 基本配置

一. 实验拓扑 二. 实验简介 交换机的VLAN端口可以分为Access、Trunk和Hybrid3种类型。Access 端口是交换机上用来直接连接用户终端的端口&#xff0c;它只允许属于该端口的缺省VLAN的帧通过。Access端口发往用户终端的帧一定不带VLAN标签。Trunk端口是交换机上用来连接其他交…

【C语言】十六进制、二进制、字节、位

【C语言】十六进制、二进制、字节、位 文章目录 [TOC](文章目录) 前言一、十六进制、二进制、字节、位二、变量、指针、指针变量三、参考文献总结 前言 使用工具&#xff1a; 1.控制器&#xff1a;STM32F103C8T6 2.仿真器&#xff1a;STLINK 提示&#xff1a;以下是本篇文章正…

修改Apollo的依赖版本包,并制作arm版本的镜像

由于一些安全因素&#xff0c;Apollo组件扫描出一些依赖插件存在安全漏洞&#xff0c;因此要修改部分依赖组件的版本&#xff0c;重新制作镜像&#xff0c;我们来看一下如何实现 1. 修改源码 1.1 拉取源码&#xff0c;并切换到我们需要的分支 # 拉取源码项目 git clone gitgi…

TeamTalk消息服务器(群组相关)

具体的流程如下介绍&#xff0c;后续需要着重研究数据库相关表的结构设计。 群组信令和协议设计 enum GroupCmdID {CID_GROUP_NORMAL_LIST_REQUEST 1025,CID_GROUP_NORMAL_LIST_RESPONSE 1026,CID_GROUP_INFO_REQUEST 1027,CID_GROUP_INFO_RESPONSE 1028,// ...... 暂时省…

pm2 + linux + nginx

pm2 pm2是一个用于管理node项目的工具 前言 有如下两个文件 index.js const express require("express"); const app express(); const port 9999;app.get("/index", (req, res) > {res.json({code:200,msg:"songzx001"}) });app.lis…

openGL笔记之序章

本系列来自 youtube 主播cherno的 openGL系列, b站双语版链接 https://www.bilibili.com/video/BV1Ni4y1o7Au?p1&vd_source0be7021510d651441db0edd576304997 openGL 是一个接口规范&#xff0c;定义了一系列接口&#xff0c;我们可以通过使用这些接口来一定程度的操作GP…

[Meachines] [Easy] Safe BOF+ROP链+.data节区注入BOF+函数跳转BOF+KeePass密码管理器密码破译

信息收集 IP AddressOpening Ports10.10.10.147TCP:22&#xff0c;80&#xff0c;1337 $ nmap -p- 10.10.10.147 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u6 (protocol 2.0) | ssh-hostkey: | 2048 …

基于django的在线音乐网站设计/基于python的音乐播放系统

Django在线音乐网站设计 摘要&#xff1a;计算机网络如果结合使用信息管理系统&#xff0c;能够提高管理员管理的效率&#xff0c;改善服务质量。优秀的在线音乐网站设计能够更有效管理音乐资讯规范&#xff0c;帮助管理者更加有效管理音乐网站&#xff0c;可以帮助提高克服人工…

【深度剖析】《黑神话:悟空》员工薪资大曝光,你慕了吗?

《黑神话&#xff1a;悟空》引爆市场&#xff0c;员工薪资却成热议焦点&#xff01; 自8月20日解锁以来&#xff0c;《黑神话&#xff1a;悟空》以其国产3A游戏的高品质迅速占领市场&#xff0c;引发全球玩家的热烈讨论。深圳市游科互动科技有限公司开发的这款游戏&#xff0c…

C++20 是 C++ 语言的一次重大更新

C20 是 C 语言的一次重大更新&#xff0c;它引入了许多新特性&#xff0c;旨在提高开发者的生产力和代码的现代化。以下是 C20 的一些关键特性的总结&#xff1a; 模块&#xff08;Modules&#xff09;&#xff1a;C20 引入了模块&#xff0c;这是一种新的编译单元&#xff0c;…

CSS解析:定位和层叠上下文

许多开发人员对定位的理解很粗略&#xff0c;如果不完全了解定位&#xff0c;就很容易给自己挖坑。有时候可能会把错误的元素放在其他元素前面&#xff0c;要解决这个问题却没有那么简单。 一般的布局方法是用各种操作来控制文档流的行为。定位则不同&#xff1a;它将元素彻底…

mysql 不同版本安装不同端口

安装版本为Mysql8.0.11 先解压&#xff0c;解压后&#xff0c;包下创建my.ini文件内容如下&#xff1a; 注意&#xff1a;端口不能给别的mysql一样 [mysqld]# 设置3306端口port3307 # 自定义设置mysql的安装目录&#xff0c;即解压mysql压缩包的目录basedirD:\\rj\\mysql8.0.…

如何将 HEIC 转换为 JPG/PNG

“我刚刚将 iPhone 15 升级到 iOS 18&#xff0c;但新 iPhone 的照片现在变为 HEIC。什么是 HEIC 格式&#xff1f;我可以在 Windows 上使用 HEIC 照片吗&#xff1f;有人知道 HEIC 的技巧吗&#xff1f;谢谢&#xff01;” 当你换了一部新的iPhone时&#xff0c;你会发现你的图…

TCP协议 配合 Wireshark 分析数据

在TCP连接中&#xff0c;无论是客户端还是服务端&#xff0c;都有可能成为发送端或接收端&#xff0c;这是因为TCP是一个全双工协议&#xff0c;允许数据在同一连接中双向流动 客户端&#xff08;Client&#xff09;&#xff1a;通常是指主动发起连接请求的一方。例如&#xf…