概念
LTT(Linux Trace Toolkit)是linux下一種用於跟蹤系統詳細運行狀態和流程的重要工具,它可以跟蹤記錄系統中的特定事件。這些事件包括:
系統調用的進入和退出
陷阱/中斷(Trap / Irq)的進入和退出
進程管理相關事件:創建 ,喚醒,信號處理等等
檔案系統相關事件:Open / Read / Write / Seek / Ioctl 等等
其他事件:IPC / Socket/ 網路 等等
此外 Ltt還提供了自定義和記錄需要跟蹤的事件類型的函式接口。
特點
LTT通過一個核心模組來監測主要的核心子系統。核心的跟蹤模組採集產生的數據,轉發給
用戶空間的守候進程並且記錄到磁碟上。
整個過程對系統運行和性能影響很小。許多測試已經證明:這個跟蹤系統在不使用的時候,影響幾乎可以忽略;即使在一些壓力條件下,影響也小於2.5%。
LTT還提供了事件觀測工具,用3種不同的格式來分析跟蹤的數據(事件圖、進程分析、原始事件)。LTT對於系統性能分析是很有用的;對於獲取實時或者非實時的任務在
核心和用戶層面的互動信息也非常有用。它的主要功能如下。
· 調試進程間的同步問題。
· 分析應用程式和核心之間的互動。
· 分析系統對外部輸入事件的回響。
· 測量進程等待較高優先權進程的時間。
因此,LTT軟體工具也比較複雜,一般可以分成3 個部分:
核心模組、數據保存和數據分析工具。
LTT軟體介紹
LTT是基於GPL發布的自由軟體,它是KarimYaghmour 創建並維護的。
最近正式發布的版本是0.9.5a。對於Linux 2.6
核心,需要使用0.9.6 以上版本,可以使用ltt-0.9.6-pre4.tar. bz2 軟體包。軟體
原始碼是按照目錄組織分類的,表1 是主要目錄的說明。
目 錄 | 說 明 |
Daemon | 跟蹤進程(Trace Daemon)的原始碼 |
Examples | 各種例子 |
ExtraScripts | 方便LTT使用的腳本 |
Help | 包含HTML幫助檔案的目錄 |
LibLTT | 包含LTT事件資料庫的目錄 |
LibUserTrace | 包含用戶跟蹤庫的目錄 |
Patches | 包含不同核心補丁的目錄 |
Visualizer | 可視化分析工具的源碼目錄 |
其餘目錄 | 其餘檔案包括autoconf/automake包,可以簡化或者自動編譯LTT軟體。 另外,“Example”目錄的編譯是由它自己的Makefile獨立編譯的。 |
安裝軟體工具
安裝 LTT工具之前要選擇適當版本的LTT軟體包。對於Linux 2.4
核心比較簡單,正式發布的軟體包都包含了必要的補丁。對於Linux 2.6
核心,需要0.9.6 以後的版本才能支持。Linux 2.6
核心的LTT 建立過程也有變化。為了使能LTT 和relayfs,必須首先在
原始碼上打補丁。這些補丁修改代碼中相關的地方,然後
核心配置界面下使能跟蹤支持選項和relayfs檔案系統選項。
LTT 在2.6
核心上採用了relayfs檔案系統。relayfs用於從
核心空間向
用戶空間高效地轉移數據。安裝跟蹤工具之後,需要先掛接relayfs,然後在給定時間內執行跟蹤進程。最新的Linux 2.6
核心版本已經採納了relayfs檔案系統。下載LTT軟體包並且解壓,編譯安裝LTT的3 個部分。
$ tar -jxvf ltt-0.9.6-pre4.tar. bz2
(1)編譯安裝新核心
要讓核心產生跟蹤信息,必須修補核心。在Patches 目錄下有以下兩個補丁。
$ ls ltt-0.9.6-pre4/Patches
ltt-linux-2.6.9-vanilla-041214-2.2.patch
relayfs-2.6.9-041124.patch
這2 個補丁分別對應LTT 和relayfs的支持。然而,因為核心不斷發展,所以經常需要更新核心補丁。通常可以到擴展【4】取得新版核心補丁。
如果使用的是不同的核心,可以試著按照補丁手工修改核心。最新的Linux 2.6
核心已經支持relayfs,不再需要relayfs 的補丁。修改完核心以後,就可以配置編譯核心了。選擇“Linux Trace Toolkit support”選單為“Y”。
在LTT 0.9.6pre2 之前發行的補丁中,可以選擇為模組,以動態方式載入跟蹤
驅動程式。之後的版本完全作為一個子系統實現而不是
設備驅動。核心編譯安裝過程很簡單。這個
核心選項在系統開發完成以後就可以去掉了,但是建議保留這個可跟蹤的核心。將來可以用於跟蹤系統現場運行的問題,實際上跟蹤系統造成的系統花銷很小。
(2)編譯安裝跟蹤監控程式
跟蹤監控程式負責將數據寫入永久性存儲設備。存儲設備可以是磁碟或者MTD 設備,開發環境下最好是NFS檔案系統。跟蹤時間越長,存儲數據量越大。
在 LTT
源碼目錄下編譯安裝跟蹤調試程式。將LDFLAGS 的值設定成-static,這樣會生成LibUserTrace
靜態程式庫。
靜態連結可以避免在
目標板上再安裝額外的庫,程式的可移植性好。對於C庫仍然使用動態連結方式,不然程式尺寸將大幅度增加。
trace 命令
腳本是啟動跟蹤監控程式的最簡單方法。也可以直接使用tracedaemon 工具,命令參數要複雜一些。
(3)安裝可視化工具
可視化工具安裝運行在
主機上,負責數據的分析顯示。它即支持命令行方式,也支持圖形方式。圖形界面無疑是最直觀的數據分析方法。如果準備使用圖形接口,系統上必須安裝GTK。預設的情況下,大多數Linux
主機系統都會安裝GTK。如果希望通過命令
腳本的分析跟蹤數據,就要把它當成命令行工具使用。編譯
原始碼,得到可視化工具tracevisualizer,把它和輔助命令
腳本安裝到主機檔案系統目錄下,配置相應的路徑。