Re: [PATCH] virtio-blk: support polling I/O

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 3/14/2022 11:55 AM, Suwan Kim wrote:
On Sun, Mar 13, 2022 at 12:42:58PM +0200, Max Gurtovoy wrote:
On 3/11/2022 5:28 PM, Suwan Kim wrote:
This patch supports polling I/O via virtio-blk driver. Polling
feature is enabled based on "VIRTIO_BLK_F_MQ" feature and the number
of polling queues can be set by QEMU virtio-blk-pci property
"num-poll-queues=N". This patch improves the polling I/O throughput
and latency.

The virtio-blk driver doesn't not have a poll function and a poll
queue and it has been operating in interrupt driven method even if
the polling function is called in the upper layer.

virtio-blk polling is implemented upon 'batched completion' of block
layer. virtblk_poll() queues completed request to io_comp_batch->req_list
and later, virtblk_complete_batch() calls unmap function and ends
the requests in batch.
Maybe we can do the batch in separate commit ?

For implementing batch in the right way you need to implement .queue_rqs
call back.

See NVMe PCI driver implementation.

If we're here, I would really like to see an implementation of
blk_mq_ops.timeout callback in virtio-blk.

I think it will take this driver to the next level.
Thanks for the feedback. I will implement .queue_rqs for virtio-blk
and make a seperate commit. Later, I will try to implement
blk_mq_ops.timeout as you mentioned.

Thanks this will be great.


I will send the patch series soon as below.
[1] support .queue_rqs for batch submission
[2] support polling I/O

I'm afraid it will be hard to implement polling if virtio spec doesn't support it.

So lets see what the maintainers will say and if there is no such support we can add it to the spec.

So for now what we can do is implement .queue_rqs and .timeout (both are orthogonal to each other).


Regards,
Suwan Kim



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux