在上篇部落格中,筆者介紹了如何三種常用的效能分析工具,其中就提到了systemtap
及其前端工具stap
。想必讀者很好奇,既然systemtap
功能這麼強大,那麼該如何安裝和使用它呢?
1. systemtap
的安裝下面基於筆者的centos
系統,分享一下自己的安裝步驟:
a.如果centos
自帶的yum
的源無法聯通,在國內可以更新yum.repos.d:
b.在fedora
、centos
、redhat
上,可以通過下面的命令來安裝ststemtap
及其依賴的kernel-develope
:yum install systemtap systemtap-runtime
yum install kernel-devel gcc make
如果要對磁碟和網路進行除錯,可以安裝專門針對這兩者的
systemap
指令碼:yum install tuned-utils-systemtap.noarch
為了使systemtap
指令碼能夠執行,需要安裝依賴的核心除錯資訊包,在現代的
os上可以通過下面的命令一鍵安裝:
stap-prep
如果上面的命令執行失敗,很可能需要為當前核心安裝相應的
package:
yum install kernel-devel-`uname -r`
debuinfo-install kernel-debuginfo-`uname -r`
rpm –force -ivh package-names
而在ubuntu
apt-get install systemtap
apt-get install linux-headers-generic gcc make
同樣也需要準備安裝核心除錯相關的包
:apt-get install linux-image-debug-generic
ln -s /boot/vmlinux-debug-$(uname -r) \
/lib/modules/$(uname -r)/vmlinux
c.測試是否安裝成功
上面的步驟完成之後,可以通過下面的命令來檢查安裝是否成功:
stap -v -e 'probe vfs.read '
2. systemtap
的使用下面說明幾種常用的使用方式:
2.1以模組的方式執行
例如從test.stp
生成乙個能執行在當前核心上的插樁模組test.ko
:stap -r `uname -r` -e 'probe vfs.read -m ******
如果上面命令執行成功,會生成test.ko,
為了讓它執行期望的探測工作,用staprun
命令把它跑起來:
staprun test.ko
2.2
以命令的方式執行
同樣完成上面的任務,可以用下面的命令執行執行:
echo 「probe vfs.read
{exit()} 「 | stap -v -
再比如:
stap -v 「probe timer.s(1)
{exit()} 「
2.3
以指令碼或命令的方式執行
如果把是上面的「probe probe timer.s(1)
{exit()}」
寫入到test.stp
指令碼裡,就可以按照下面的方式進行執行:
stap -vvv test.stp
這種方式通常可以跟很多選項:
-o file_name
指定輸出檔名
-x procss_id
指定探測程序id
為'process_id『
的程式-e
為systemtap translator
指定乙個指令碼而非檔案
-f執行systemtap
的flight recorded
模式,並且指定在後台執行
參考文章:
systemtap_beginners_guide
SystemTap安裝與使用
使用systemtap之前,安裝它,如何安裝參考鏈結1,同時,需要配套安裝除錯符號表。centos 64的系統,安裝除錯符號表 安裝 kernel debuginfo common x86 64 uname r el7.x86 64.rpm kernel debuginfo x86 64 uname...
systemtap 安裝試用
1.安裝 yum install y systemtap systemtap runtime 2.環境準備 a.自動安裝依賴 stap prep b.手動安裝依賴 kernel debuginfo kernel debuginfo common kernel devel 簡單的方式使用yum ins...
使用 SystemTap 除錯核心
systemtap 是一種新穎的 linux 核心診斷工具,提供了一種從執行中的 linux 核心快速和安全地獲取資訊的能力。systemtap 是核心開發人員和系統管理員的福音,因為這使得他們可以通過編寫或者重用簡單的指令碼來收集核心的實時資料,而不需要再忍受修改原始碼 編譯核心 重啟系統的漫長煎...