时延抖动的物理本质
消息从 A 传输到 B,其时延包括三部分,主机处理时延,传播时延,网络排队时延,不同领域的工人关注不同的时延组分,他们的共识是,不怕时延大,就怕时延抖动大,因此每个领域的工人和经理都想消除时延抖动,但很遗憾,时延的抖动根本无法消除。
不光数据传输时延会抖动,任何统计复用系统的内秉属性之一就是抖动,抖动是统计复用系统与生俱来的性质,而不是问题,理解这一点非常重要。这些系统非常常见,比如操作系统调度,交通系统,温度,气象学,布朗运动等等,于是,思考一下它们背后本质的东西就很必要。
在我看来,所有的时延抖动都可理解为一种期望值的方差,它是任何局部对全局信息不确定性的度量,而信息的不确定性又可由熵度量,熵越小,信息越确定,熵越大,信息越不确定。此外,时间的本质即熵增,那么时延抖动的本质就是熵增的不确定性,即信息的缺失。
那么排队论的结论,排队时延一定会产生且无法根除,从熵增的理论上就可以被简单理解。排队时延可以理解成由于信息的不确定性带来的必然熵增的结果,从熵增单向性(即时间不可倒流)的角度看,排队时延无法消除,又由于信息不确定性本身亦无法度量,不光时延本身无法消除,时延抖动亦无法消除。排队时延即不确定性的量化体现。
你永远不知道一小时后堵在你前面的车子在何时离开车库,他也不知道他前面车子的状态,同理,CPU 永远不知道何时会新建一个进程,这些不确定性本质上就是熵增,在宏观层面,熵增就是时间的流逝,熵增需要时间来消解,这就是排队时延以及其抖动的根源,只要你理解了这个,就能理解它为什么无法被根除。
将信息论,热力学,排队论联系在一起是有益的,因为它们本来就是一回事,不是说它们的哲学是统一的,而是它们本来就是同一个哲学,你看,统计特性描述的波动,不可预测性所谓的高熵,时间演化所谓的熵增,它们在同一个逻辑链上。
来用中心极限定理验证一下。
一个数据集终究具有内秉特征,即它所 “拥有的知识”,问题是如何获得这个知识,中心极限定理提供的方法是不断抽样,即然它一定包含一个内秉特征,每次抽样都代表着多了一个学习样本,理论上随着学习样本增多,对该数据集包含知识的掌握就越全面,即抽样会减少信息的不确定性,它对任何误差都不偏不倚,因此它会不断逼近真实知识的期望,且方差越来越小,它只有这一个方向,这就是中心极限定理。
再用中心极限定理的推论验证一下为什么 AIMD 流越多,所需 buffer 越小。因为流越多,“所有流的总吞吐可以时刻撑满带宽” 这件事越确定,而 AIMD 的目标之一就是提供带宽利用率,不多也不少。
时延以及时延抖动不可消除之根源有其物理世界的脉络。其一,世界由分形的局部组成整体,策者是局部的,也会整体的,局部和整体连接成一个反馈环,局部会影响整体,反过来又影响局部,造成全局状态不可预测,这意味着世界是随机的,这是根本原因;其二,永远无法测量或观测整体,只能采样,只要不是全体,样本和全体必然有偏差,这是实践原因;其三,观测者存在 “观测者效应”,观测者亦整体组成部分,且观测手段存在物理极限,该物理界限即使再微观也能逐步叠加到可影响观测结果的状态,这是技术原因。
…
那些搞端到端算法的总幻想一种启发式算法能消除抖动,那些搞数据中心传输的整天折腾什么 lossless,pfc,都是扯淡,我早就重复过多次,信息的不确定性导致这些根本就无法等价实现,但 google 的 swift 是个正确的路,它旨在更加精确区分时延的组分,可即使这样它也只能走到那么远,换句话说,swift 只是区分了抖动的尺度,将主机这个统计复用系统和网络这另一个统计复用系统分开了而已,各自内部的信息依然是不确定的。
事情并非只能悲观从忍,虽然时延及抖动不可避免,但能被管理。首先要容忍并接受时延及抖动,然后管理它们,比如优化系统调度器,提供更加全局的知识,设计更加经理的排队规则和调度策略,当你提供足够多的信息时,系统就朝向了确定性,类似 TSN,实时系统那般,SDN 也算类似的思路,这些都非常经理。
今日从天台山大瀑布绕到琼台仙谷,全程步行,回住所作文一篇。
浙江温州皮鞋湿,下雨进水不会胖。