我正在探索具有不同选项的 fio 工具。我想共享读写工作负载,因此将下面的作业文件提供给 fio。
[read-4K-write-64K]
blocksize=4K,64K,
rw=readwrite
rwmixread=50
size=10M
filename=readwritefile
输出片段:
read: IOPS=11.0k, BW=42.0MiB/s (45.1MB/s)(616KiB/14msec)
write: IOPS=10.8k, BW=674MiB/s (707MB/s)(9664KiB/14msec)
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=154,151,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=42.0MiB/s (45.1MB/s), 42.0MiB/s-42.0MiB/s (45.1MB/s-45.1MB/s), io=616KiB (631kB), run=14-14msec
WRITE: bw=674MiB/s (707MB/s), 674MiB/s-674MiB/s (707MB/s-707MB/s), io=9664KiB (9896kB), run=14-14msec
为什么选择这个选项rwmixread=50没有将从文件读取和写入文件的 io 大小设置为 5k(大约)?
相反,从代码片段中可以看到 616KiB 用于读取,9664KiB 用于写入。
其实效果是怎样的读写混合读和读写混合写入关于测试工作量。
谢谢和问候,莫汉
答案1
Arg,一个多问题的问题!
为什么[不]选项 rwmixread=50 [..]将从文件读取和写入文件的 io 大小设置为 5k(大约)?
rwmixread
只是指定应读取完成的 I/O 的百分比。不幸的是,我不明白你从哪里得到“5k”这个数字——你能解释一下吗?做数学:
10M = 10485760 bytes
(10485760 / ( (4 * 1024) + (64 * 1024) )) = 150
所以我们应该对每种类型的 I/O 方向执行 150 左右:
issued rwts: total=154,151,0,0 short=0,0,0,0 dropped=0,0,0,0
fio 离这个目标并不遥远。更多计算:
154 * (4 * 1024) = 630784 = 616KBytes
所以我不清楚问题是什么 - 这些数字似乎与您要求的不同块大小相对应(所有 I/O 必须在完成 10MBytes 的 I/O 后完成)。
实际上 rwmixread 和 rwmixwrite 对测试工作负载有什么影响。
这些选项会更改工作负载中的读取与写入的比率。然而,如果读取的块大小大于写入的块大小(反之亦然),那么当您在固定大小的区域中执行 I/O 时,每个方向完成的数据总量将会不同。