[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v2 0/3] aio: use g_slice_alloc() for AIOCB pooling,
Kevin Wolf <=