在CentOS上安装TCP协议性能评测工具tcpdive
生活随笔
收集整理的這篇文章主要介紹了
在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"
然后執行
如果一切正常的話,將會在當前script下面生成rpm包
安裝生成的rpm包
rpm -ivh tcpdive-2.6.32-926.504.30.3.cloud.el6-1.0-stable.x86_64.rpm
查詢rpm包是否安裝成功
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.可能出現的問題
參考文獻
[1].http://blog.csdn.net/wangzuxi/article/details/42849053
[2].https://github.com/fastos/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
如果一切正常的話,將會在當前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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在CentOS 6.6 x86_64上安
- 下一篇: Linux上chown命令的高级用法