我做过效果最好的TCP优化可将吞吐提升10%~20%,性能衰减长尾消除,P99接近中位数,如何做的?把这个秘密作为新年礼物送给穿皮鞋的经理们。

一句话就能说清楚:

  • 我用了2000多个(约数,大致就是这个意思)if分支区分对待2000多个IP地址段,对它们分别设置cwnd/pacing_rate,平滑RTT。
if (src == 1.2.3.4) { cwnd = 1234; ...
} else if (src == 4.3.2.1) { cwnd = 510; srtt = srtt - a; ...
} else if (src = 123.123.123.4) {
...
...
...

很low的做法,但管用。

在基调,博睿等第三方测试平台测试,我花了一个周末的时间整理历史数据。我的编程水平很差,无力Python,不会Excel,采用复制粘贴的方式用bash在vim里处理数据,对吞吐率区间进行IP地址聚类,最终得到了2000多个IP段。根据这2000多个段进行定制优化,效果相当棒。

这里没有用到任何高端的技术:

  • 没用Python,Excel。
  • 没用OO,设计模式。
  • 半手工方式处理数据。
  • if分支进行定制优化。
  • 一个C函数几千行。
  • 没用任何高端算法。
  • 没用任何复杂算法。
  • 小学生都会做。

难点在哪里?难点就是让这一切不再需要人力。这可能就扯到AI算法了,而AI算法我也不懂。

这是一个靠蛮力取胜的例子。你会发现做到这个结果和编程技术没有关系,只需要稍微会一点就可以,甚至都可以不懂网络,我只需要告诉我女儿要怎么把数据挑出来,整理成什么形式,她应该会比我更快完成,因为她会用Python。

回头看我到底做了什么熵减的事情,总结来看就是我描绘了2000多幅相对准确的链路画像,手工干这个事情就是熵减的过程。

传输优化的核心就是链路画像,别的都不重要。

不要指望一个cc算法就能让你的TCP连接加速,cc是用来收敛的,不是用来加速的。你总觉得吞吐低是因为cc算出来的cwnd偏小,于是你加几个,比如简单地加10,甚至加1,这样带来的心理安慰属实有效,因为在常识中,好就是大。但事实可能会让你失望:

  • 明明实验室自测时都是正向收益,为什么上线就歇菜呢?

哪里出了问题?

事实上,加几个cwnd,对那些本来吞吐就很高的优秀连接,确实会有正向收益,但是会烂长尾。如果碰上弱网连接,或者恰好的连接,加几个cwnd会加剧拥塞丢包进而加剧重传,这会是一个恶性循环,最终导致烂长尾。整体性能差的原因就是这些烂长尾导致的。

核心问题就是识别这些加几个cwnd就会烂的连接,这才是可上线的实用传输加速的难点!

BBR也不能带来极致优化的效果的原因还是在于没有熵减,换句话说就是信息太少了,信息太少便只能靠猜。缺失的信息便是链路画像。链路画像是一个静态信息,它是对规律进行归纳总结的结果,这是一个熵减的过程。

如何用AI画出链路画像不是本文的重点,而且我也不会,本文的重点是告诉你链路画像是可以画出来的。
没有做过这个行当的可能会不认同我的观点,可能会认为拥塞控制以及传输加速是在连接内持续进行的,所以必须做实时预测。你可能没有get到一个事实:

  • 现实世界在大体上是确定的,小范围波动。 世界并不混乱。

以通勤交通为例,固定时间固定的地点的车流量相差无几,其中会有递归的规律,比如每周三下午6点武宁路内环匝道的车流基本相同,和每周日相同时间不同。所以你会发现即便是开车或公交车而不是乘轨道交通,每天下班到家的时间也是相差无几的,大概3到5分钟的误差,偶尔波动,但大体规律(so,不要跟媳妇谎称天天不规律堵车)。

网络流量也一样。背后的动力学还是个人习惯的全局同步,每个人固定的时间会做固定的事,每天晚上7点40分刷抖音的和每天晚上11点看网剧的会带来不同的网络流量,但对于每一类都是确定的,偶尔波动。

要做的就是把这个规律找出来:

  • 要么手工做,会很累,会显得自己很忙。
  • 找博士帮忙,对AI,建模,数据分析要求高。

理论上可以对所有IPv4地址绘制几十亿幅链路画像。能绘制和如何绘制是两回事,能绘制是因为世界并不混乱,如何绘制需要经理和博士。

本文可能会修改,想起来再说吧。

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

揭开TCP传输性能优化的秘密相关推荐

  1. openEuler A-Ops通用场景TCP传输性能劣化检测工具开发报告

    --开源软件开发导论项目实践总结报告 摘要:本项目是应用openEuler A-Ops项目中的gala-gopher组件而开发的通用场景下TCP传输性能劣化检测工具,主要功能是通过对gala-goph ...

  2. TCP吞吐性能优化的吐槽与拯救

    上周文章转发朋友圈后,我补充了个评论,我不晓得为什么RDMA底层传输协议还在复用TCP那一套,只是为了重用而重用吗?完全可以重写的协议还在GBN,还在将SACK作为GBN的优化,沿着老路重走一遍-请用 ...

  3. 计算机网络|iperf测量不同拥塞控制下TCP传输性能

    系列文章目录 待更新- 文章目录 系列文章目录 前言 一.实验准备 二.操作内容及步骤 1.内核相关指令 2.iperf or iperf3 什么是iperf/iperf3? iperf特性 3.tc ...

  4. 炫技,从12.67s到1.06s的网站性能优化实战

    (给视学算法加星标,提升全栈技能) 作者:jerryOnlyZRJ https://juejin.im/post/5b6fa8c86fb9a0099910ac91 0.引言 作为互联网项目,最重要的便 ...

  5. 网站性能优化实战—从12.67s到1.06s的故事

    本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升. 0.引言 作为互联网项目,最重要的便是用户 ...

  6. 网站性能优化实战——从12.67s到1.06s的故事

    --本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升. 原文链接:imweb.io/topic ...

  7. JavaScript系列—性能优化之《网站性能优化实战——从12.67s到1.06s的故事》

    本篇博文来源于网络 226 人赞同了该文章 原文作者:IMWeb jerryOnlyZRJ  原文链接:网站性能优化实战--从12.67s到1.06s的故事 - 腾讯Web前端 IMWeb 团队社区 ...

  8. 炫技,从 12.67s 到 1.06s 的网站性能优化实战

    0.引言 作为互联网项目,最重要的便是用户体验.在举国"互联网+"的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代,我们的网页不仅只是呈现在用户的PC浏 ...

  9. Web 性能优化:HTTP

    个人博客 在策略层面,(四维空间针对指定问题绝对复杂性的)普适优化手段最终都是在两种维度之间进行取舍转换: 当时间更宝贵时,用空间换时间: 当空间更宝贵时,用时间换空间. Web 性能优化:TCP W ...

  10. 网站性能优化总结(前端篇)

    1.网络传输性能优化 这是navigation timing监测指标图,从图中我们可以看出,浏览器在得到用户请求之后,经历了下面这些阶段:重定向→拉取缓存→DNS查询→建立TCP链接→发起请求→接收响 ...

最新文章

  1. XAML实时显示更新插件LiveXAML
  2. android 图像对比,Android中比较两个图片是否一致的问题
  3. 制作网页版电子时钟特效
  4. Flask知识点查阅
  5. Silverlight中需要用到模板选择器(DataTemplateSelector)的替代方案
  6. Java关键字this的使用方法解析大全
  7. 计算机网络重置点命令,重置网络命令 重装系统如何重置网络命令
  8. php爬虫模拟登陆爬取数据全过程
  9. 使用FastDFS实现图片服务器的功能【案例演示】
  10. 【python数据挖掘课程】二十七.基于SVM分类器的红酒数据分析
  11. 14.hibernate的入门
  12. [CVPR2022|基于文本实例分割]ReSTR: Convolution-free Referring Image Segmentation Using Transformers
  13. 坚果PRO3搭载Android,安卓 10 来了,坚果 Pro 3 推送 Smartisan OS v7.5.0 早期众测版
  14. [享学Eureka] 二十二、DiscoveryClient服务注册的小工具:InstanceInfoReplicator
  15. vue3 源码分析-运行流程分析
  16. 蓄电池内阻测试仪分析软件,进口蓄电池内阻测试仪
  17. 网络信息安全对抗(北京邮电大学版)考点总结
  18. notepad++ 获得搜索得到的文件名列表
  19. vs2017 运行卡的一种解决方案
  20. 既然选择了远方,就只顾风雨兼程!

热门文章

  1. 深大与南科大计算机,深圳大学和南方科技大学你选哪所?哪所实力更强?
  2. 生产环境部署springcloud微服务启动慢的问题排查
  3. Win11 U盘驱动异常怎么调整为正常?
  4. BC66F3652研发笔记
  5. Python入门到放弃
  6. ftp服务器挂载到手机文件夹,ftp服务器挂载到本地
  7. 如何更改HomePod使用的Apple ID?
  8. cocos2d-x csb特效文件显示
  9. 黑马12期配套15年6天hadoop培训
  10. Netplus收发消息的基本流程