我正在使用 fio-3.14 重播 blktrace 创建的跟踪文件。我的 Linux 版本是 Mint 18.3,内核为 4.10.0-38-generic。作为 root,我按照以下步骤操作:
- 第一步
我使用以下工作负载选项在 /home/arghavan/fio/test 上应用了 fio 工作负载。同时,我使用命令:blktrace -d /dev/sda6
来捕获 /dev/sda6 上的跟踪,因为它安装在 fio 运行工作负载的 /home 上。
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
- 第二步
我使用命令:blkparse sda6 -a read -o /dev/null -d /root/traces/sda6_trace.bin
制作 blkparse 二进制文件,fio 可以使用该文件重播跟踪。
- 第三步
我使用 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
您确定blktrace
只记录了分区的 I/O/dev/sda6
而没有完全记录整个/dev/sda
分区的 I/O 吗?我懂了https://www.spinics.net/lists/linux-btrace/msg00417.html但我不确定它是否曾经应用于主流内核......