[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC v4 11/11] virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization
From: |
Stefan Hajnoczi |
Subject: |
Re: [RFC v4 11/11] virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization hint |
Date: |
Tue, 23 Aug 2022 15:22:13 -0400 |
On Tue, Aug 23, 2022 at 10:01:59AM +0200, David Hildenbrand wrote:
> On 23.08.22 00:24, Stefan Hajnoczi wrote:
> > Register guest RAM using BlockRAMRegistrar and set the
> > BDRV_REQ_REGISTERED_BUF flag so block drivers can optimize memory
> > accesses in I/O requests.
> >
> > This is for vdpa-blk, vhost-user-blk, and other I/O interfaces that rely
> > on DMA mapping/unmapping.
>
> Can you explain why we're monitoring RAMRegistrar to hook into "guest
> RAM" and not go the usual path of the MemoryListener?
The requirements are similar to VFIO, which uses RAMBlockNotifier. We
need to learn about all guest RAM because that's where I/O buffers are
located.
Do you think RAMBlockNotifier should be avoided?
> What will BDRV_REQ_REGISTERED_BUF actually do? Pin all guest memory in
> the worst case such as io_uring fixed buffers would do ( I hope not ).
BLK_REQ_REGISTERED_BUF is a hint that no bounce buffer is necessary
because the I/O buffer is located in memory that was previously
registered with bdrv_registered_buf().
The RAMBlockNotifier calls bdrv_register_buf() to let the libblkio
driver know about RAM. Some libblkio drivers ignore this hint, io_uring
may use the fixed buffers feature, vhost-user sends the shared memory
file descriptors to the vhost device server, and VFIO/vhost may pin
pages.
So the blkio block driver doesn't add anything new, it's the union of
VFIO/vhost/vhost-user/etc memory requirements.
Stefan
signature.asc
Description: PGP signature
- [RFC v4 02/11] numa: call ->ram_block_removed() in ram_block_notifer_remove(), (continued)
- [RFC v4 02/11] numa: call ->ram_block_removed() in ram_block_notifer_remove(), Stefan Hajnoczi, 2022/08/22
- [RFC v4 04/11] block: use BdrvRequestFlags type for supported flag fields, Stefan Hajnoczi, 2022/08/22
- [RFC v4 03/11] block: pass size to bdrv_unregister_buf(), Stefan Hajnoczi, 2022/08/22
- [RFC v4 05/11] block: add BDRV_REQ_REGISTERED_BUF request flag, Stefan Hajnoczi, 2022/08/22
- [RFC v4 07/11] block: add BlockRAMRegistrar, Stefan Hajnoczi, 2022/08/22
- [RFC v4 06/11] block: return errors from bdrv_register_buf(), Stefan Hajnoczi, 2022/08/22
- [RFC v4 08/11] exec/cpu-common: add qemu_ram_get_fd(), Stefan Hajnoczi, 2022/08/22
- [RFC v4 09/11] stubs: add qemu_ram_block_from_host() and qemu_ram_get_fd(), Stefan Hajnoczi, 2022/08/22
- [RFC v4 11/11] virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization hint, Stefan Hajnoczi, 2022/08/22
[RFC v4 10/11] blkio: implement BDRV_REQ_REGISTERED_BUF optimization, Stefan Hajnoczi, 2022/08/22
Re: [RFC v4 00/11] blkio: add libblkio BlockDriver, Vladimir Sementsov-Ogievskiy, 2022/08/23