[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_d
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap |
Date: |
Wed, 12 Jul 2017 09:07:57 +0800 |
User-agent: |
Mutt/1.8.3 (2017-05-23) |
On Tue, 07/11 12:28, Paolo Bonzini wrote:
> On 11/07/2017 12:05, Stefan Hajnoczi wrote:
> > On Mon, Jul 10, 2017 at 05:08:56PM +0200, Paolo Bonzini wrote:
> >> On 10/07/2017 17:07, Stefan Hajnoczi wrote:
> >>> On Wed, Jul 05, 2017 at 09:36:32PM +0800, Fam Zheng wrote:
> >>>> Allow block driver to map and unmap a buffer for later I/O, as a
> >>>> performance
> >>>> hint.
> >>> The name blk_dma_map() is confusing since other "dma" APIs like
> >>> dma_addr_t and dma_blk_io() deal with guest physical addresses instead
> >>> of host addresses. They are about DMA to/from guest RAM.
> >>>
> >>> Have you considered hiding this cached mapping in block/nvme.c so that
> >>> it isn't exposed? block/nvme.c could keep the last buffer mapped and
> >>> callers would get the performance benefit without a new blk_dma_map()
> >>> API.
> >>
> >> One buffer is enough for qemu-img bench, but not for more complex cases
> >> (e.g. fio).
> >
> > I don't see any other blk_dma_map() callers.
>
> Indeed, the fio plugin is not part of this series, but it also used
> blk_dma_map. Without it, performance is awful.
How many buffers does fio use, typically? If it's not too many, block/nvme.c can
cache the last N buffers. I'm with Stefan that hiding the mapping logic from
block layer callers makes a nicer API, especially such that qemu-img is much
easier to maintain good performance across subcommmands.
Fam
- Re: [Qemu-block] [PATCH v3 2/6] block: Add VFIO based NVMe driver, (continued)
[Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Fam Zheng, 2017/07/05
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Stefan Hajnoczi, 2017/07/10
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Stefan Hajnoczi, 2017/07/10
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Paolo Bonzini, 2017/07/10
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Stefan Hajnoczi, 2017/07/11
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Paolo Bonzini, 2017/07/11
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap,
Fam Zheng <=
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Paolo Bonzini, 2017/07/12
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Stefan Hajnoczi, 2017/07/14
- Re: [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_map and bdrv_dma_unmap, Paolo Bonzini, 2017/07/14
[Qemu-block] [PATCH v3 4/6] block/nvme: Implement .bdrv_dma_map and .bdrv_dma_unmap, Fam Zheng, 2017/07/05
[Qemu-block] [PATCH v3 5/6] qemu-img: Map bench buffer, Fam Zheng, 2017/07/05
[Qemu-block] [PATCH v3 6/6] block: Move NVMe spec definitions to a separate header, Fam Zheng, 2017/07/05