RDMA\text{RDMA}RDMATCP/IP\text{TCP/IP}TCP/IP 到底有什么区别,都说是绕过了操作系统,节省了切换,拷贝的时间,但这并非本质。

没有人或机器在乎那几 ns\text{ns}nsus\text{us}us,甚至几十 ms\text{ms}ms 的绝对时间,真正值得在乎的是统计波动带来的不确定性,而不确定性正是长尾延时的元凶,不确定性放大了统计各阶矩,统计波动造成的状态不同步持续累加,降低了资源利用率,最终,低利用率最终表现为更长的时间,这才是本质。

操作系统正是一个统计复用的环境,想要降低长尾,增强确定性,消除各阶矩的手段就是绕开操作系统。

操作系统领域有个实时概念,而通用操作系统恰恰是与之相对的,换句话说,通用任务没有绝对的截止时间,受调度,中断,内存管理约束的网络传输任务,你永远不知道 “下一时刻” 在何时到达。

在端到端 100us\text{100us}100us 级超时的任务中,操作系统带来的统计波动可达数倍超时时间,因此绕开操作系统几乎是必须的。

那么对于网络传输本身呢?

网络本身的统计波动几乎都来自于丢包,排队,若要降低各阶矩,势必要对丢包,排队进行控制,而这类任务在端到端是绝对无法实现的。这就是我一向鄙视数据中心,算力网络端到端算法,并提倡对网络拓扑,路由本身下手的原因。

要么把确定性交给随机,要么让随机自由随机。

我将独立样本四则混合运算的结果的有效性视为确定性的度量,而显然,两个连续 RTT\text{RTT}RTT 样本的加减乘除是无意义的,这也是工程上往往用移动指数平均来平滑它们的原因,换句话说,你无法用 “尺子” 量出时延的 “长度”,你只能获得统计结果,正如分子的速度毫无工程意义,但一堆分子的速度可以表征精确的温度一样。

而各类分布均有抹平波动的 “热力学定律”,关键看你对数据传输行为的假设,如果都不行,比如幂律分布中失效的万能的大数定律和中心极限定理,至少也能压制,让你腾出手可以改变分布,比如分类,packet-spraying\text{packet-spraying}packet-spraying

生在不同的土壤,可以认为 TCP\text{TCP}TCP 天生就是各类统计波动无感知的,若要优化 TCP\text{TCP}TCP,你就得让它感知到统计波动,于是出现了各类岗位,可它偏偏是端到端的,就算感知到了统计波动,它也无力降低各阶矩,所以做 TCP\text{TCP}TCP 优化的都是骗钱的。

RDMA\text{RDMA}RDMA 则天然适应无损网络,虽然不漂亮,但 PFC\text{PFC}PFC 确实是降低各阶矩的手段之一,而各类针对拓扑,路由的网络重构在各大公司也正在进行,这也是个正确的方向,但千万不要抄 TCP/IP\text{TCP/IP}TCP/IP 的作业。

裤衩子锁着边儿,而且绣着花儿。

不少对工程技术毫无认知的小老板,经理,商务人士,甚至编程的人对一项技术能力边界的错误认识,会把项目带入泥潭。他们只要看到表现不佳的技术,就想去 “优化” 它,而不是换另一个更加适应该场景的现成技术。

也就是说,这些人眼里的所有现成技术都是有缺陷的,这给了他们穿着西裤搭配回力而不是皮鞋的理由。

这只是技术本身的能力边界,更别指望跟他们谈统计和确定性的关系。

飞机确实比高铁快得多,但在南方雨季,坐飞机要浪费更多的时间用来等待,而高铁则可掐着点随到随走。

绝绝绝绝大多数情况下,发展了 404040 余年的原生 TCP/IP\text{TCP/IP}TCP/IP 足以应对所有网络传输场景,不要总想着对它进行这样那样的修改,协议优化是全局的,交易的,除非是全局标准制定者,否则任何局部的收益都是捣乱。

TCP\text{TCP}TCP 已经利用了沙漏模型端到端所有信息,不能再更多,但一点也不少,在统计意义上,它就是最优的。强如 Google\text{Google}Google 这般,BBR\text{BBR}BBR 不也照样歇菜。

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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐