blktrace
『blktrace』是一個block layer的IO 追蹤機制,其可以提供每個到user space的『request queue』的資訊,也擷取了某個區塊裝置(block device)到某個檔案的I/O event資訊。它有三個主要的元件:『kernel component』, 『一套軟體用來紀錄kernel到user space的資訊』,『用來分析和觀看監視資訊的軟體』。
底下有幾個背景知識如果你先了解一下會對blktrace的輸出會多一點理解:
- blktrace接收了在buffers裡面傳送到debug file system 的kernel資料,每個被追蹤的裝置都會有一個檔案被建立在掛載的debugfs裡面,預設是在『/sys/kernel/debug』,這個屬性可以被用『-r』來複寫掉。
- blktrace預設會收集所有可被追蹤的事件資訊,如果想要限制被追蹤的事件的話,可以藉由『-a』來具體指定一個或多個『filter masks』。
- 就像上面所提到的,事件都是經由一系列的buffers來傳輸並且儲存在debugfs檔案裡面,buffers的size和數量都可以由-b和-n參數來指定。
- blktrace儲存擷取的資料到本地端資料夾裡的檔案,預設檔案名稱的格式是『device.blktrace.cpu』,device就是基本的裝置名稱,假設我們追蹤的是『/dev/sda』的話,則基本的裝置名稱就是『sda』,而CPU當然就是這個事件處理的CPU識別。
- blktrace也可以和blkparse同步執行,這樣的話就可以同時輸出一些相關的資訊,要這樣做的話就要在使用blktrace時,用『-o -』。
- blktrace預設啟動會一直執行下去,除非你殺掉這個process(control-c或是傳送SIGINT),又或者是你可以直接指定option『-w』,這會指定一個存活的期間,單位是秒,然後就會停止。
SYNOPSIS
blktrace -d dev [ -r debugfs_path ] [ -o output ] [ -w time ] [ -a action ] [ -A action_mask ] [ -v ]