从一个实际问题入手。
当 RTT 增加了,如何区分是拥塞导致的,还是路径变长导致的。常规的方案是 probe,多增加一些 inflight,测量 1 个 RTT 后的带宽:
- 拥塞排队的带宽: b w 1 = C ⋅ I + 10 C ⋅ 2 ⋅ R T T + 10 bw_1=C\cdot\dfrac{I+10}{C\cdot 2\cdot RTT+10} bw1=C⋅C⋅2⋅RTT+10I+10
- 路径变长的带宽: b w 2 = I + 10 2 ⋅ R T T bw_2=\dfrac{I+10}{2\cdot RTT} bw2=2⋅RTTI+10
或者,减少一些 inflight,测量 1 个 RTT 后的带宽:
- 拥塞排队的带宽: b w 1 = C ⋅ I − 10 C ⋅ 2 ⋅ R T T − 10 bw_1=C\cdot\dfrac{I-10}{C\cdot 2\cdot RTT-10} bw1=C⋅C⋅2⋅RTT−10I−10
- 路径变长的带宽: b w 2 = I − 10 2 ⋅ R T T bw_2=\dfrac{I-10}{2\cdot RTT} bw2=2⋅RTTI−10
如果觉得难以从绝对值中获取足够精细的信息用以判定,则可计算梯度(常规的做法,求导,求二阶导,泰勒展开),用梯度去做拟合运算,捕捉所有能捕捉到的莫须有的细节,依赖一切根本测不准的不稳定指标,模拟搭建确定性重现的实验环境,综合这一切高大上,到头来就是一篇论文,但也仅仅是一篇论文。
关于这种风格的算法的唯心主义样式,我写过一篇文章 BBR 的 minRTT 采集问题,但说实话,我不认同这种既没收益有限但故作有无(显得跟真的似的)的启发式算法,而启发式算法依赖特定边界条件,模糊场景并不都符合。
为什么不从行为主义入手,基于场景去 "学习" 呢?
什么时候应该从办公室的 WiFi 切到 5G(详见 WiFi 切换 5G 的时机),如何区分一个人是去趟厕所马上回来,还是下班后与办公室渐行渐远是重要的,前者应该尽量不切换,后者应该尽量切换,于是就会出现种类繁多但几乎都没用的启发式算法,各个宣称自己好把式。
难道不应该让手机自己学习吗(行为主义,场景学习)?每周工作日几点下班手机很快就能知道,上厕所是否拉屎(比尿尿时间久得多)用类似方法也能感知,只要到了下班时间段或拉屎时间段,只需将切换阈值调低即可。别人惊讶并求教于我的算法为什么如此优秀,很简单,它自己学会了而已。
算法,就是一篇作文,时间,地点,事件,等等其它维度,或者说就是一个世界模型,足够多的状态映射到多够多的维度,建模,调参学习,无非如此,对于类似传输优化判定,WiFi 切换这种特定场景的调优,就是写一篇命题作文。下面我来说一下依据。
我们生活的世界不需要太多启发式算法,信息很充足,但得把这些看似离散独立的信息绘制在时间轴上,在一个足够大到可观测的尺度上才能看出关联和规律,这就是学习的过程,等看出规律时,就算学会了,利用学会的规律就可以预测了。
每天饭后遛弯到固定街角会遇到跟你一样遛弯的同一群人,你每天固定时间点到达那里,有什么理由别人不呢,当你了解到这个事实,你只是 "学会了规律" 而已,而不是深入到了对方的内心,影响了他的行为,让他特定时间到达了特定地点。同样的理由,每天地铁坐你边上,站你左右的几乎就是同样那几个人,你买的京东快递送货员几乎也是同一个人,每次都几乎在同一个时间送到你家门口。
按照第一性原理理解,惰性最省力,没人愿意时刻应对随机,因为这需要每次付出相同的能量而不能复用此前的经验,工人,快递员,经理,不会经常变换行为,他们的行为是可预测的,这些都是可学习可利用的规律。
在一个可观测尺度,没有谁的生活是杂乱无章的,就连一只鸟都会固定时间停在你家空调外机上。日月星辰的周期性决定了生物钟的周期性,而生物钟决定了行为,世界不是随机的。
不要试图举反例,也不必纠结原因,持因果论反驳我。持科学的尚方宝剑抓不住重点地用反例反驳是程序员的通病,而陷入不在一个层面的细节是整个机械论教化下所有理工科群体的通病,所以他们永远看不上,也用不好这类微观尺度上随机但宏观尺度上规律的技术。
机械论教化下的所有启发式算法,其共同特征是,过度关注手头的,瞬时的,微观的,精确的测量,而忽略甚至故意忽略了宏观的,长期的行为模式。
落回实处,从小的方面说,我用 1000 个 if-then 分支优化的 cubic 算法为每批次特定的 IP 地址段分配不同的 cwnd,效果远比顶会论文级融合各种数学的启发式算法要好得多,原因在于这些额外的 IP 段跨省跨运营商,访问时段信息在 TCP 连接生命周期内是学不到,而我在一个足够大的时间时间尺度(2 个月)中学到了,我有更多的信息,当然能实施更优化的控制。镜头拉远,你才能看见山峦全貌,山脚下,你看到的只是石头。
从大的方面讲,双 11 备战,12306 承担海量并发连接访问,并不是靠什么牛逼的算法调度资源,而是双 11,长假等,它就在那里,时间段固定,在此之前足够久,资源早就被人为配置好了,从修改配置,切换线路到搬机器上架上电,这难道不比启发式算法来得高效,但在多数编程者眼里,这不值得一提。
对于认同此方法的工人们来讲,如果说以前只是想做却不知道怎么做,现在有大模型甚至多模态大模型了,它正是根据信息发现模式的好把式,它给出的结果没有因果,只是最大概率,因此该结果是描述性而非解释性的,所谓描述性就是,世界本来就是这个样子的,中立没有倾向性可信赖,反而解释却依赖信仰或信念。
浙江温州皮鞋湿,下雨进水不会胖。