我正在上的 VM 上Ubuntu 1604
使用fio-2.1.10
引擎运行。libaio
AWS
它的IO调度器是“ none
”。 (我猜它会使用“ noop
”)。
并且,磁盘的nomerge
是0
,这意味着合并已启用。
但,运行时fio
,我看到有没有合并发生(参见 fio 结果:)merge=0/0
。
Amazon Linux 2016.09
我在on上执行了相同的设置和相同的 fio 命令AWS
(相同的 VM 类型和相同的磁盘配置),合并确实发生了。
那么你能告诉我这个设置的区别在哪里吗Ubuntu 1604
?Amazon Linux
如何在 Ubuntu VM 上启用此合并?
root@ip-10-0-96-236:~# cat /sys/block/xvdb/queue/nomerges
0
root@ip-10-0-96-236:~# cat /sys/block/xvdb/queue/scheduler
none
root@ip-10-0-96-236:/mnt# /home/ubuntu/fio-2.1.10/fio --name=read --bs=4k --ioengine=libaio --iodepth=128 --size=16G --direct=1 --runtime=12000 --numjobs=8 --rw=read --group_reporting
read: (g=0): rw=read, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=128
...
fio-2.1.10
Starting 8 processes
... ...
... ...
Disk stats (read/write):
xvdb: ios=1240654/0, merge=0/0, ticks=1842300/0, in_queue=1844664, util=99.98%
注意:参见上面的日志,合并为0(merge=0/0)。 iostat 还报告没有发生合并。
答案1
该设备可能是多队列的,因此它实际上没有 ioscheduler。可能是设备速度太快,直接请求没有时间合并。有一个类似的问题正在调查https://lists.gt.net/xen/devel/394204#394204用户发现只有当完成时间足够长时才会发生合并。是否是 Ubuntu 设置使您的请求延迟较低?
(请注意,Ubuntu 上的 fio 相当旧)