blktrace - 順次IOとランダムIOの区別

blktrace - 順次IOとランダムIOの区別

私はアプリケーションがシーケンシャルI / Oを実行しているのか、ランダムI / Oを実行しているのかを確認する方法を探しています。 blktraceキャプチャを見て、I / Oが順次かランダムかを知ることはできますか?それでは、どのようなパターンを探すべきですか?

答え1

この情報を取得するにはblktrace+を使用することが可能です。blkparseU&L Q&Aに含まれるチャートを見てください。Linuxカーネルとパフォーマンスツールのグラフ?、特にこのセクション。

SS#1

blktraceこのようなデータをお見せできる場所にあるようです。マニュアルページを見ると、出力に数字を含めることblkparseができることが示されています。sector

blkparse のマニュアルページから抜粋
OUTPUT DESCRIPTION AND FORMATTING
       The output from blkparse can be tailored for specific use -- in 
       particular, to ease parsing of output, and/or limit output fields
       to  those the user wants to see. The data for fields which can be 
       output include:

       a   Action, a (small) string (1 or 2 characters) -- see table below 
           for more details
       c   CPU id
       C   Command
...
       s   Sequence numbers
       S   Sector number

はい

$ sudo blktrace /dev/sda
Ctrl + C

次に、以下を使用して分析しますblkparse

$ blkparse sda -f "%-10S %D %2c %8s %5T.%9t %5p %2a %3d\n" | head -10
4064336      8,0    3        1     0.000000000  2779  A   R
5090384      8,0    3        2     0.000000404  2779  A   R
5090384      8,0    3        3     0.000001656  2779  Q   R
5090384      8,0    3        4     0.000010042  2779  G   R
5090384      8,0    3        5     0.000013714  2779  I   R
  8,0    3        0     0.000019067     0  m   N cfq2779SN / insert_request
  8,0    3        0     0.000021085     0  m   N cfq2779SN / add_to_rr
  8,0    3        0     0.000026848     0  m   N cfq2779SN / set_active wl_class:2 wl_type:1
  8,0    3        0     0.000029175     0  m   N cfq2779SN / fifo=          (null)
  8,0    3        0     0.000030077     0  m   N cfq2779SN / dispatch_insert

報告するセグメントがある場合は、カンマなしで数字(4064336など)で表示されます。したがって、理論的には、セクタ番号が連続かランダムかを確認することができます。

難しい部分は、どのアプリケーションが低レベルでどのI / Oイベントを発生させたかを確認することです。この問題を解決するには、fatraceこのU&L Q&Aで詳しく説明されている次のツールを使用できます。高いI/Oを担当する特定のファイルの識別

引用する

関連情報