在CentOS上安装TCP协议性能评测工具tcpdive
1.Tcpdive的基本原理
Tcpdive是基于linux内核的探测点机制,使用systemtap脚本语言和内嵌C代码来实现的。
通过定义几类相互关联的探测点和库函数,来收集和处理运行中内核的数据,以及修改内核的处理逻辑。
2.源码目录
https://github.com/fastos/tcpdive
目前的代码基于CentOS 6.5,内核版本号2.6.32-431.17.1开发的。在实际使用中,我们的OS及内核版本很少与此相符,所以需要我们在当前环境基于源码编译rpm包,再安装。
下面我详细描述一下我的实操过程。
3.搭建SystemTap环境
参见http://blog.csdn.net/tao_627/article/details/52137901
下面再详细说明一下:
3.1.查询当前内核版本,并确认内核提供utrace/uprobes用户态支持
uname -r
2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64
cat /boot/config-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64 | grep '_UTRACE'
CONFIG_UTRACE=y
3.2.安装内核调试所需要的包
yum -y install gcc
yum -y install kernel-devel-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64
yum -y install kernel-debuginfo-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64
yum -y install kernel-debuginfo-common-x86_64-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64
3.3.安装SystemTap
yum -y install systemtap
验证SystemTap是否安装成功?
stap -ve 'probe begin{log("hello SystemTap!")exit()}'
4.安装tcpdive
cd ~
从github下载源码并编译
git clone https://github.com/fastos/tcpdive.git
cd tcpdive/script
根据当前内核版本号修改make_rpm.sh中的宏定义,
#KERNEL_VER="2.6.32-431.17.1.el6.x86_64"
KERNEL_VER="2.6.32-926.504.30.3.cloud.el6.x86_64"
然后执行
sh make_rpm.sh
对生成rpm包过程中出现的错误,逐一排除,参见"可能出现的问题"一节
如果一切正常的话,将会在当前script下面生成rpm包
安装生成的rpm包
rpm -ivh tcpdive-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64.rpm
查询rpm包是否安装成功
rpm -qa | grep tcpdive
5.启动tcpdive
修改/usr/bin/tcpdive脚本,修改对应的日志配置文件
LOG_NAME="tcpdive.log" # log file name
LOG_SIZE="500" # per log file's upper size(MB)
LOG_NUM=20 # max number of log files
PORTS="80" # server ports concerned, eg. 80,8080
然后启动
tcpdive status
tcpdive start
6.在本机访问指定监测端口80
过一定时间会在当前目录看到日志文件,内容如下
7.可能出现的问题
这个问题的出现,主要是因为当前的Linux内核版本与tcpdive中的内核版本源码有差异造成,需要根据当前内核版本来生成rpm包。上面的报错是说,5830行没有对应的函数。
解决方法有两个,一个是按照上面的提示,将行号5830换为5826或是5833,另一个方法,是查找tcp_input.c源码中每个函数所在的行号,使用下面的命令:
stap -L 'kernel.statement("tcp_rcv_state_process@net/ipv4/tcp_input.c:*")'
参考文献
[1].http://blog.csdn.net/wangzuxi/article/details/42849053
[2].https://github.com/fastos/tcpdive
在CentOS上安装TCP协议性能评测工具tcpdive相关推荐
- 如何在Ubuntu/CentOS上安装Linux内核4.0
如何在Ubuntu/CentOS上安装Linux内核4.0 大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为'Hurr durr I'm a sheep'的 ...
- 在Red Hat或CentOS上安装 MongoDB-4.x 社区版
在Red Hat或CentOS上安装MongoDB社区版 目录 本文概述 注意事项 安装MongoDB 运行MongoDB 卸载MongoDB 概述 使用本教程,使用软件包管理器在Red Hat En ...
- CentOS上安装Jekins
CentOS上安装Jekins 安装源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins ...
- CentOS上安装Web性能测试工具Siege 示例
2019独角兽企业重金招聘Python工程师标准>>> 本文记录一次在CentOS上安装Web性能测试工具Siege的步骤,并对安装过程中遇到的问题进行解决~ Siege是什么? S ...
- CentOS上安装运行XWiKi
现在XWiKi已经一行命令支持安装java -jar xwiki-enterprise-installer-generic-9.4-standard.jar. war安装我搞了三天都没有搞定,参考了& ...
- 在CentOS上安装Java环境—openjdk1.7 解决https配置问题
在CentOS上安装Java环境:[1]使用yum安装java 现阶段做企业级项目开发一般都采用Java语言.开发的项目需要放在服务器上运行测试,若以CentOS系统为服务器系统,首先要解决就是Cen ...
- Centos上安装EPEL
RHEL以及他的衍生发行版如CentOS.Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安 ...
- mysql5.7在centos上安装
2019独角兽企业重金招聘Python工程师标准>>> 原文地址:http://blog.csdn.net/you23hai45/article/details/50984328 h ...
- 安装 oracle-xe,CentOS上安装Oracle XE指南
引言: 在CentOS上安装Oracle XE主要用来解决学习和测试的用处,虽然简单,但也是涉及到了诸多的步骤和细节问题. 1. 下载Oracle XE 访问http://www.oracle.co ...
最新文章
- ⑥python模块初识、pyc和PyCodeObject
- 为什么电脑磁盘从C盘开始,之前的A盘和B盘呢?
- 人工智能在牙科医疗领域是一片蓝海
- MySQL Server has gone away报错原因汇总
- 高仿真 JDK Proxy手写实现
- keras添加正则化全连接_TensorFlow keras卷积神经网络 添加L2正则化
- vue 计算文件hash值_vue的hash值原理,也是table切换。
- linux内核mtd分区,linux-kernel – 在运行时调整MTD分区大小
- iPhone和SSH
- HttpClient工具类 HttpClientUtils.java
- Makefile:GCC CFLAGS变量和LDFLAGS变量
- cudaMemcpy的性能问题
- 微信小程序豆瓣电影项目的改造过程经验分享
- 常见阿拉伯数学符号以及拼写
- Codeforces Round #554 (Div. 2) 1152B. Neko Performs Cat Furrier Transform
- Vue 按enter键实现登陆 过程
- 佛罗里达州的最新的野生动物保护区
- 那些年我们一起手写过的单例
- 集体过冬,Hyper-V为企业省钱
- Ubuntu20.04编译并运行imu_utils,并且标定IMU
热门文章
- 计算机网络实验报告建立校园网,计算机网络实验报告
- 基于css3 transform实现散乱的照片排列
- mysql更改数据文件目录及my.ini位置| MySQL命令详解
- Python学习笔记十一:面向对象
- ASP.NET MVC3 在WebGrid中用CheckBox选中行
- VS2010创建ATL类时需要手动填写ProgID
- [转]Android JNI使用方法
- 图解DotNet框架系列
- aml linux 环境,各位辛苦编译DSDT.aml的兄弟,linux是个好工具啊,简单提取
- 目标检测计算mAP,AP,Recall,Precision的计算方式和代码(YOLO和FastRCNN等)