監控 iops 大小

監控 iops 大小

如何監控現代 Linux 上儲存 iops 的大小?

我可以使用 iostat 等命令監控儲存 iops 的數量。但是我想知道工作負載產生的 iops 的大小。

例如,在最後 X 秒內有:5 iops 4K、10 iops 8K、20 iops 16K ...

我對區塊裝置層級的監視感興趣(例如:/dev/sda),但在任何其他層級也很有趣。

答案1

低級

在低級別,您可以從 獲取此信息/sys/block/X/stat,該信息已記錄在案這裡

範例內容如下圖所示:

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

我們想要的欄位是用於讀取的列 1 和 3,以及用於寫入的列 5 和 7。兩者的計算方法是相同的,所以我只討論讀取。

第 1 列是讀取次數(您表示您已經能夠監控),第 3 列是讀取的磁區數。一個磁區為 512 位元組。因此,用這些來計算讀取的大小,您只需這樣做$col3 * 512 / $col1
該文件中的數字是自磁碟上線以來的總數。因此,要計算一段時間內的平均讀取大小,您只需讀取檔案兩次,然後使用以下方法進行計算:($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1)

請注意,上述方法為您提供了在應用程式層級執行的 OP 的大小(描述並不準確,但足夠接近)。核心可以將多個操作合併在一起,因此在磁碟上執行的操作數量更少。對此的計算是:$col3 * 512 / ($col1 - $col2)。並取得一段時間內的值:($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))

高水準

iostat也可以給你價值,但不太準確。它不區分寫入或讀取,並且僅提供扇區值,而不是位元組值(因此再次乘以 512)。但命令是iostat -x -d,要查看的列是avgrq-sz

相關內容