[Top][All Lists]

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

Re: [Qemu-devel] [Qemu-block] [PATCH v3 3/6] block: Introduce bdrv_dma_m

From: Fam Zheng
Subject: Re: [Qemu-devel] [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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]