qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 0/3] aio: use g_slice_alloc() for AIOCB pooli


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v2 0/3] aio: use g_slice_alloc() for AIOCB pooling
Date: Mon, 12 Nov 2012 11:34:44 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0

Am 31.10.2012 16:34, schrieb Stefan Hajnoczi:
> AIO control blocks are frequently acquired and released because each aio
> request involves at least one AIOCB.  Therefore, we pool them to avoid heap
> allocation overhead.
> 
> The problem with the freelist approach in AIOPool is thread-safety.  If
> we want BlockDriverStates to associate with AioContexts that execute in
> multiple threads, then a global freelist becomes a problem.
> 
> This patch drops the freelist and instead uses g_slice_alloc() which is
> tuned for per-thread fixed-size object pools.  qemu_aio_get() and
> qemu_aio_release() are now thread-safe.
> 
> Note that the change from g_malloc0() to g_slice_alloc() should be safe
> since the freelist reuse case doesn't zero the AIOCB either.
> 
> v2:
>  * Split into 3 patches (I still took the liberty of combining the AIOPool ->
>    AIOCBInfo rename with constification because I didn't want to touch all
>    those files twice) [Paolo]
> 
> Stefan Hajnoczi (3):
>   aio: switch aiocb_size type int -> size_t
>   aio: use g_slice_alloc() for AIOCB pooling
>   aio: rename AIOPool to AIOCBInfo
> 
>  block.c           | 31 ++++++++++++-------------------
>  block/blkdebug.c  |  4 ++--
>  block/blkverify.c |  4 ++--
>  block/curl.c      |  4 ++--
>  block/gluster.c   |  6 +++---
>  block/iscsi.c     | 12 ++++++------
>  block/linux-aio.c |  4 ++--
>  block/qed.c       |  4 ++--
>  block/rbd.c       |  4 ++--
>  block/sheepdog.c  |  4 ++--
>  block/win32-aio.c |  4 ++--
>  dma-helpers.c     |  4 ++--
>  hw/ide/core.c     |  4 ++--
>  qemu-aio.h        | 12 +++++-------
>  thread-pool.c     |  4 ++--
>  15 files changed, 48 insertions(+), 57 deletions(-)

Thanks, applied all to the block branch.

Kevin



reply via email to

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