0
0

Systemtap辅助设置tcp_init_cwnd,免对操作系统打Patch

Yu Feng 发表于 2011年03月21日 16:47 | Hits: 2552
Tag: Linux | 工具介绍 | 杂七杂八 | 网络编程 | staprun | systemtap

原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: Systemtap辅助设置tcp_init_cwnd,免对操作系统打Patch

前段时间google的工程师提出对tcp的拥塞窗口的初始值进行增大可以显著的提高http的性能,这个主要是针对tcp的slow start的优化.
具体参考这里,这里. 谢谢叔度同学从美国带回第一手信息!

由于低版本的linux内核的问题,这个参数的正确设置需要对os打patch,这个过程对线上机器来讲非常麻烦。 底下我用systemtap给出了个解决方案,免除这个麻烦. 我们在RHEL 5U4上作这个试验:

首先需要在开发机器上:

#安装符号信息
$uname -r
2.6.18-164.el5
$ sudo rpm -i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm
$ sudo rpm -i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm 

$ sudo yum install systemtap

$ cat > tcp_init_cwnd.stp
probe kernel.function("tcp_init_cwnd").return
{
$return = $1
}
CTRL+D

#设成7个mss
$ sudo stap -p4 -g -m initcwnd tcp_init_cwnd.stp 7
initcwnd.ko

好了,现在我们需要的模块有了, 可以直接拷贝到目标机器去的.
#目标机器需要安装systemtap,用于运行我们的模块.

$uname -r
2.6.18-164.el5
$ sudo yum install systemtap

#在系统的启动脚本里面运行以下命令:
$ sudo staprun -o initcwnd.out -D initcwnd.ko
$ 19122
#19122是initcwnd模块加载器在后台运行的进程号,需要的时候可以把模块停掉。

#当然如果你的模块没有输出的话也可以直接, 这样更简单
$ sudo insmod initcwnd.ko

大家碰到类似的问题,可以参考下这个思路.

玩得开心!

Post Footer automatically generated bywp-posturl pluginfor wordpress.

原文链接: http://blog.yufeng.info/archives/1173

0     0

评价列表(0)