天天看點

systemtap系列之實用腳本 1.   網絡 2.   磁盤 3.   診斷 4.   競争

安裝完systemtap相關rpm包之後,

在路徑/usr/share/systemtap/testsuite/systemtap.examples/或者/usr/share/doc/systemtap-client-3.0/examples/network/中有所有可實用的腳本。

1.  

網絡

檢視系統中每個程序的網絡傳輸情況:

nettop.stp追蹤系統中産生的網絡流量。

socket-trace.stp跟蹤net/socket.c檔案中的所有函數,容易導緻系統HUNG住。

tcp_connections.stp實時跟蹤TCP連結,擷取未認證的,可疑的,不需要的網絡請求。

tcpdumplike.stp跟蹤udp和tcp包接收,因為有點像tcpdump,但是原理是安全不一樣的,tcpdump是在鍊路層L2的,這個是在L4層比tcpdump高層很多。

       dropwatch.stp

追蹤系統丢包情況,通過跟蹤kfree_skb來實作,有些類似dropwatch工具,不過隻顯示了丢包的位址,并沒有函數,可以增加參數--all-modules或者老版本的-dkernel,來顯示函數名字。

2.  

磁盤

disktop.stp輸出讀寫最頻繁的10個程序。

iotime.stp跟蹤系統中每次open,close,read,write的系統調用并計數,同時記錄讀寫的位元組數量即花費時間,最後在close的時候來輸出。

       traceio.stp每秒列印一次,IO負載最嚴肅的前十個10程序。

       traceio2.stp跟蹤指定裝置的vfs_read和vfs_write。裝置參入通過stat

-c “0x%D” dirctory來擷取。 Dirctory是磁盤所在目錄,例如/home.

       inodewatch.stp用來實時觀察一個檔案的讀寫,需要輸入3個參數,分别是檔案的主裝置号,次裝置号,和inode,可以通過指令stat -c "%D %i" filename來擷取.其中得到的裝置号中低位是次裝置号,高位是主裝置号。

       inodewatch2.stp監控程序修改檔案屬性。

       ioblktime.stp循環列印IO阻塞時間,計算每個裝置塊IO的等待時間,如果請求的IO被merge了就忽略。

3.  

診斷

functioncallcount.stp在監控事件函數被調用的次數。例如:stap 

functioncallcount.stp "*@mm/*.c,如果使用通配符容易系統奔潰。

       para-callgraph.stp可以包含兩個參數。第二參數用使能或關閉,隻有第二個參數觸發後,其相關的線程才能出發第一個參數,起到過濾的作用。

       thread-times.stp列出5秒内消耗CPU時間最多的程序,列出使用者空間和核心空間的消耗時間。

       timeout.stp跟蹤poll,select,epool,itimer,futex,nanosleep,signal系統調用過程逾時的次數。

       topsys.stp

用于查找使用系統調用最多的應用。

       syscalls_by_proc.stp列出執行最多的系統調用。

4.  

競争

futexes.stp檢測futext系統調用顯示鎖争用。

繼續閱讀