概念
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,把它和輔助命令腳本安裝到主機檔案系統目錄下,配置相應的路徑。