前面提到一种用 sigmoid 函数度量网络的方法(参见 网络传输质量评价体系),旨在将所有度量归于 0 到 1 区间,度量百分位或凸显不凸显取代度量绝对值,但苦于调参。后转为应用数据积累分布曲线替换 sigmoid 曲线,解决了调参问题,因为曲线本身就内含了原始数据的概率分布,参数内化于曲线,而曲线本身已经调制好了,这是一个好方法。
这种方法的核心是用百分等级替代绝对值,取消了单位量纲换算,如此便可直接运算组合。度量的目标是展示指标高了还是低了,多个指标组合显示事件发生了还是没发生。合理或巧妙运用中心极限定理,非常容易对指标意味着什么进行判定。
举一个例子,历史 rtt 均值(算术的 or 移指的)为 D,最近的抽样均值为 D + r,根据 r 在历史均值分布的偏移很容易获得百分位信息,历史均值抽样分布根据中心极限定理是正态分布,而正态分布非常容易处理。
用这种方法重构 PCC 算法的打分函数也是可以的,毕竟 sender 只想知道 “变好” 或 “变坏”,这是个相对量,用积累分布函数和中心极限定理再合适不过,这就省去了原始打分函数 U 的 sigmoid 校准,在一个公式里统一处理 rtt,丢包率,吞吐是非常困难的,苦于调参和论证。
这种方法早已在教育和绩效考核领域被广泛应用,比如学生成绩,都归一化到优良中差四个分位,361 绩效考核也是按百分位定级,比处理连续的绝对值处理高效很多,非常便于直接相加映射到指数,省去了复杂的加权运算。
我用 “度量网络质量” 做题目只因为我对此比较熟,并不意味着这种方法只能度量网络质量,该领域外一个合理的例子是度量主机网络栈的健康性。
为 TCP 未决 Request 数量建立一个计数器 counter1,为 SYN-ACK 建立一个计数器 counter2,Accept 处理创建 counter3,统计其均值分布即可分辨是遭遇 DDoS 还是主机性能不够,诸如此类。
这方法普遍适用于任何统计复用系统,不管哪种具体场景,度量的意义在于为优化提供数据支撑,从而脱离了凭空优化,但遗憾的是,即使大多数优化点不是凭空的,但针对优化解决的问题多数也是捏造的,自己幻想一个问题场景,然后解决该问题。幻想的问题专为后续优化做铺垫,而在实际环境中,该问题引发的统计劣化占比远未达到需要解决的地步,换句话说,它不影响 Pxx,xx 是系统被关注的统计百分位阈值。
优化系统,统计先行。
可惜当前的普遍认知(源自于教育)侧重对确定性系统屎上雕花,而忽略了系统的统计性,博弈均衡等更核心的特征,普遍陷入寻找局部最优解的泥潭,这显然与全局最优相悖,全局最优意味着不可能照顾所有的局部,而对于局部而言 “差不多足够好” 就是 “最好”。
基于统计的 p99 仍阻止不了工人们纠结 “这个数据包为什么重传”,统计律告诉我们,如果异常占比不到一定阈值,就可以忽略它们,在一个统计复用系统内,没有任何事件是确定的。
显然,我的度量方法可以帮系统找到 “足够好” 的 “最好的” 解,但在局部,它肯定不是 “最优”。
读《有趣的统计》(Bruce Frey 著)第三章有感,结合我此前的网络传输质量评价体系中用积累分布函数替换 sigmoid 函数所基于的统计方法,写一篇随笔。
浙江温州皮鞋湿,下雨进水不会胖。