I am running Ubuntu 1604, with fio-2.1.10, libaio engine, on a VM on AWS.

Its IO scheduler is "none". (I guess it will use "noop").

And, the disk's nomerge is 0, that means merge is enabled.

But, when running fio, I see there is no merge happens (see the fio results: merge=0/0).

I did the same settings and same fio command on a Amazon Linux 2016.09 on AWS (same VM type and same disk configuration), the merge did happen.

So can you tell me where is the difference for Ubuntu 1604 and Amazon Linux on this settings? How can I enabled this merge on a Ubuntu VM?

root@ip-10-0-96-236:~# cat /sys/block/xvdb/queue/nomerges

root@ip-10-0-96-236:~# cat /sys/block/xvdb/queue/scheduler

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
Starting 8 processes
... ...
... ...

Disk stats (read/write):
  xvdb: ios=1240654/0, merge=0/0, ticks=1842300/0, in_queue=1844664, util=99.98%

Note: see above log, the merge is 0 (merge=0/0). Also iostat reported no merge happening.


The device is probably multi-queue so it doesn't really have an ioscheduler. It could be the device is so fast that the direct requests have no time to be merged. There's a similar question an investigation over on https://lists.gt.net/xen/devel/394204#394204 and the user found that the merges only took place when completion times were high enough. Could it be that the Ubuntu settings are such that your requests have lower latency?

(Note that your fio on Ubuntu is fairly old)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.