了解fio中读写的工作负载共享

了解fio中读写的工作负载共享

我正在探索具有不同选项的 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 时,每个方向完成的数据总量将会不同。

相关内容