私はblktraceで生成されたトレースファイルを再生するためにfio-3.14を使用しています。私のLinuxバージョンはMint 18.3で、カーネルは4.10.0-38-genericです。ルートとして、次の手順に従います。
- 最初のステップ
次のワークロードオプションを使用して、/home/arghavan/fio/testにfioワークロードを適用しました。また、blktrace -d /dev/sda6
fioはワークロードを実行している/ homeにマウントされているので、/ dev / sda6でトレースをキャプチャするために次のコマンドを使用しました。
Fioワークロード
; Read 4 files with aio at different depths
[global]
ioengine=libaio
directory=/home/arghavan/fio/test
buffered=0
rw=randread
bs=128k
size=512m
[file1]
iodepth=4
[file2]
iodepth=32
[file3]
iodepth=8
[file4]
iodepth=16
- ステップ2
私は次のコマンドを使用して、fioがトレースをblkparse sda6 -a read -o /dev/null -d /root/traces/sda6_trace.bin
再生するために使用できるblkparseバイナリを作成します。
- 第三段階
私はfioと次のコマンドを使用してfio --name=rp1 --read_iolog=/home/arghavan/traces/sda6_trace.bin --replay_no_stall=1 --replay_redirect=/dev/sda6
トレースを再生します。ただし、fioは次のエラーを報告します。
fio: io_u error on file /dev/sda6: No space left on device: write offset=278643662848, buflen=4096
fio: pid=11495, err=28/file:io_u.c:1785, func=io_u error, error=No space left on device
Jobs: 1 (f=1): [f(1)][-.-%][eta 00m:00s]
rp1: (groupid=0, jobs=1): err=28 (file:io_u.c:1785, func=io_u error, error=No space left on device)
デバイスに空き容量がたくさんありますが、問題が何であるかわかりません。どうすればいいですか?
答え1
パーティション全体のI / Oではなく、blktrace
パーティションのI / Oのみを記録しましたか?わかります/dev/sda6
/dev/sda
https://www.spinics.net/lists/linux-btrace/msg00417.htmlしかし、主流のカーネルで使用されているかどうかはわかりません...