日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的trace文件路径,linux系统分析工具之Blktrace(十)

發布時間:2024/9/27 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的trace文件路径,linux系统分析工具之Blktrace(十) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Blktrace簡介:

blktrace是一個針對Linux內核中塊設備I/O層的跟蹤工具,用來收集磁盤IO信息中當IO進行到塊設備層(block層,所以叫blk trace)時的詳細信息(如IO請求提交,入隊,合并,完成等等一些列的信息),是由Linux內核塊設備層的維護者開發的,目前已經集成到內核2.6.17及其之后的內核版本中。通過使用這個工具,使用者可以獲取I/O請求隊列的各種詳細的情況,包括進行讀寫的進程名稱、進程號、執行時間、讀寫的物理塊號、塊大小等等,是一個Linux下分析I/O相關內容的很好的工具

透過blktrace來觀察io行為的時候,第一件事情需要選擇目標設備,以便分析該設備的io行為。blktrace分為內核部分和應用部分,應用部分收到我們要捕捉的設備名單,傳給內核。內核分布在block層的各個tracepoint就會開始工作,把相關的數據透過relayfs傳遞到blktrace的應用部分,應用部分把這些數據記到磁盤,以便后續分析。

blktrace架構圖參照:

block層位置圖參照:

blktrace是一個可以顯示block的io詳細信息的工具,但他的輸出信息太專業了,很難看懂,可以同通過blkiomon、blkparse,btt等工具來查看

blktrace工作原理:

(1)blktrace測試的時候,會分配物理機上邏輯cpu個數個線程,并且每一個線程綁定一個邏輯cpu來收集數據

(2)blktrace在debugfs掛載的路徑(默認是/sys/kernel/debug )下每個線程產生一個文件(就有了對應的文件描述符),然后調用ioctl函數(攜帶文件描述符, _IOWR(0x12,115,struct blk_user_trace_setup),& blk_user_trace_setup三個參數),產生系統調用將這些東西給內核去調用相應函數來處理,由內核經由debugfs文件系統往此文件描述符寫入數據

(3)blktrace需要結合blkparse來使用,由blkparse來解析blktrace產生的特定格式的二進制數據

(4)blkparse僅打開blktrace產生的文件,從文件里面取數據做展示以及最后做per cpu的統計輸出,但blkparse中展示的數據狀態(如 A,U,Q,詳細見下)是blkparse在t->action & 0xffff之后自己把數值轉換為“A,Q,U之類的狀態”來展示的。

blktrace安裝:

$ sudo apt-get install blktrace

Debugfs掛載:

由blktrace工作原理可知,blktrace需要借助內核經由debugfs文件系統(debugfs文件系統在內存中)來輸出信息,所以用blktrace工具之前需要先掛載debugfs文件系統

$ sudo mount –t debugfs debugfs /sys/kernel/debug

blktrace語法:

blktrace -d dev [ -r debugfs_path ] [ -o output ] [-k ] [ -w time ] [ -a action ] [ -A action_mask ] [ -v ]

blktrace選項:

-A hex-mask#設置過濾信息mask成十六進制mask

-a mask#添加mask到當前的過濾器

-b size#指定緩存大小for提取的結果,默認為512KB

-d dev#添加一個設備追蹤

-I file#Adds the devices found in file as devices to trace

-k#殺掉正在運行的追蹤

-n num-sub#指定緩沖池大小,默認為4個子緩沖區

-o file#指定輸出文件的名字

-r rel-path#指定的debugfs掛載點

-V#版本號

-w seconds#設置運行的時間

輸出方式:

文件輸出:

$ blktrace –d /dev/sda –o test1

#對/dev/sda的trace,輸出文件名為test1. Blktrace.[0-cpu數-1](文件里面存的是二進制數據,需要blkparse來解析)(如之前在blktrace原理中提到,每個邏輯cpu都有一個線程,產生一個文件,故會產生cpu數目個文件)

終端輸出:

$ blktrace –d /dev/sda –o - | blkparse -i –

#輸出到終端用“-”表示,可是都是一堆二進制東西,沒法看,所以需要實時blkparse來解析

#Blkparse 的“-i”后加文件名,blktrace輸出為“-“代表終端(代碼里面寫死了,就是用這個符號來代表終端),blkparse也用“-”來代表終端解析

幾個例子:

blktrace -d /dev/sda -o - |blkparse -i -

此命令是將blktrace的結果輸出到屏幕,然后blkparse將屏幕中的blktrace的結果作為分析的輸入,最后將分析的結果同樣輸出到屏幕。這里需要指出的是,blkparse是基于blktrace的分析工具,因為blktrace本身并不具有分析功能,它只是進行監測,其余的工作都是由blkparse來進行的。

blktrace -d /dev/sda |blkparse -i -

此命令是將blktrace的結果輸出到本地文件夾,文件名為sda.blktrace.0和sda.blktrace.1,這里之所以有兩個文件是因為運行機器有兩個CPU的緣故,blktrace根據CPU的個數來生成文件,對應每個CPU都有一個相應的監測數據文件。

blktrace -d /dev/sda -o trace |blkparse -i -

此命令是將blktrace的結果輸出到已經事先指定好的文件trace中,注意這個trace文件必須在本地文件夾中存在,無需帶有任何后綴。運行之后會產生兩個新的文件叫做trace.blktrace.0和trace.blktrace.1。

blkparse -i trace

此命令是將trace文件作為blkparse的輸入,blkparse的結果依然輸出到屏幕

blkparse -i trace -o /root/trace.txt

此命令是將trace文件作為blkparse的輸入,同時將分析結果輸出到/root/trace.txt這個文件,以便人工進行更加深入的分析,因為trace文件是人眼不可讀的,所以如果要進行更多后續的人工或程序處理最好還是將結果轉化為文本文檔來處理。

總結

以上是生活随笔為你收集整理的linux的trace文件路径,linux系统分析工具之Blktrace(十)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。