-
源自新浪的TCP性能分析工具Tcpdive.zip下载
资源介绍
为什么要开发Tcpdive
在过去的几年里,随着移动互联网的飞速发展,整个基础网络已经发生了翻天覆地的变化。
用户接入网络的方式,除了宽带和光纤之外,还有2G/3G/4G/WiFi,5G也已经在路上了。
作为使用范围最广的传输层协议,TCP诞生于固网时代,在设计之初并没有考虑到上述种种情况,
这导致了它在某些场景下,性能并不是最优的。因此大多数的CDN厂商和一些规模较大的互联网公司都会
进行TCP协议的优化,以提供更好的用户体验,如更快的访问速度,更低的访问失败率,更流畅的视频播放等。
而当我们尝试优化TCP协议时,却面临着不少难点:
可用的工具少。
和TCP相关的工具,比如tcpdump,netstat和ss,虽然很好用,但是使用场景并不是TCP协议的性能评测,
能够提供的性能信息实在有限。
依靠个人感觉,进行盲试。
不知道瓶颈在哪,盲目修改,或者直接套用已有的优化方法。
盲目修改常导致徒劳无功,直接套用现成的方法,由于大家的应用场景不尽相同,也不一定有效。
测试成本高。
对TCP协议的性能评测主要采用两种方法。
一种是通过对上层应用的测试,来评估TCP协议的性能。这种方法的评价指标有限,而且是上层应用相关的。
另一种是依靠第三方测试服务。这种方式的样本量有限,且成本较高。
无法准确地评价优化效果。
上述的两种测试方法,都涉及到应用层面,因此测量的不仅仅是TCP协议本身,还参杂了干扰因素。
Tcpdive的设计目标
针对上述问题,我们决定设计一个专门的TCP协议性能评测工具,也就是Tcpdive。
之所以起这个名字,是因为dive有深入研究的意思:)
Tcpdive具有一些特性,实际上也是我们的设计目标:
对TCP协议的性能进行较为全面的刻画,有助于发现瓶颈。
如此一来,就能找到痛点,不用再盲目地进行优化。
易于部署和使用,无需改动生产环境,使用成本低。
这一点非常重要,因为不需要修改内核或者应用程序,比较容易推广。
独立于上层应用,能够准确地评价优化效果。
直接对TCP协议的性能进行刻画,而不依赖于具体的应用。
因此能够排除上层应用的干扰,量化地评价优化效果。
Tcpdive的基本原理
Tcpdive是基于linux内核的探测点机制,使用systemtap脚本语言和内嵌C代码来实现的。
通过定义几类相互关联的探测点和库函数,来收集和处理运行中内核的数据,以及修改内核的处理逻辑。
为什么要基于systemtap呢?systemtap的神奇之处在于,不修改内核的情况下就能获取内核中的任何信息, 还可以修改内核的处理逻辑。所以虽然被它虐了千百遍,但还是觉得这套探测点机制非常有用。当然它也不是 十全十美的,比如作为一种调试语言,它是够用的,但是把它用作一种开发语言,则会遇到不少问题。通过不 断的尝试,大多数问题最终都获得比较好的解决。
目前Tcpdive已经部署到作为流量入口的负载均衡服务器上,在新浪的线上环境7*24h运行,可以说是比较稳定的。
Tcpdive的主要功能
作为一个TCP协议的性能评测工具,Tcpdive提供了大量的性能指标,从以下维度来对每条TCP连接进行刻画:
传输情况
丢包和重传
拥塞控制
HTTP处理
传输:
损失和重传:
拥塞控制:
HTTP 处理:
标签:tcpdive
- 上一篇: bma250原厂驱动源码
- 下一篇: opensc-0.12.2 源码包