On Thu, Dec 07, 2023 at 12:31:05PM +0800, Li Feng wrote: > virtio-blk is generally used in cloud computing scenarios, where the > performance of virtual disks is very important. The mq-deadline scheduler > has a big performance drop compared to none with single queue. In my tests, > mq-deadline 4k readread iops were 270k compared to 450k for none. So here > the default scheduler of virtio-blk is set to "none". > > Signed-off-by: Li Feng <fengli@xxxxxxxxxx> > --- > drivers/block/virtio_blk.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) This seems similar to commit f8b12e513b95 ("virtio_blk: revert QUEUE_FLAG_VIRT addition") where changing the default sounded good in theory but exposed existing users to performance regressions. Christoph's suggestion back in 2009 was to introduce a flag in the virtio-blk hardware interface so that the device can provide a hint from the host side. Do you have more performance data aside from 4k randread? My suggestion would be for everyone with an interest to collect and share data so there's more evidence that this new default works well for a range of configurations. I don't want to be overly conservative. The virtio_blk driver has undergone changes in this regard from the legacy block layer to blk-mq (without an I/O scheduler) to blk-mq (mq-deadline). Performance changed at each step and that wasn't a showstopper, so I think we could default to 'none' without a lot of damage. Let's just get more data. Stefan > > diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c > index d53d6aa8ee69..5183ec8e00be 100644 > --- a/drivers/block/virtio_blk.c > +++ b/drivers/block/virtio_blk.c > @@ -1367,7 +1367,7 @@ static int virtblk_probe(struct virtio_device *vdev) > vblk->tag_set.ops = &virtio_mq_ops; > vblk->tag_set.queue_depth = queue_depth; > vblk->tag_set.numa_node = NUMA_NO_NODE; > - vblk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE; > + vblk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_NO_SCHED_BY_DEFAULT; > vblk->tag_set.cmd_size = > sizeof(struct virtblk_req) + > sizeof(struct scatterlist) * VIRTIO_BLK_INLINE_SG_CNT; > -- > 2.42.0 >
Attachment:
signature.asc
Description: PGP signature