From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=42343 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OOrEn-00038o-Fy for qemu-devel@nongnu.org; Wed, 16 Jun 2010 07:57:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OOrEm-0007Yn-0u for qemu-devel@nongnu.org; Wed, 16 Jun 2010 07:56:57 -0400 Received: from e23smtp02.au.ibm.com ([202.81.31.144]:41425) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OOrEl-0007Xn-E1 for qemu-devel@nongnu.org; Wed, 16 Jun 2010 07:56:55 -0400 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.31.245]) by e23smtp02.au.ibm.com (8.14.4/8.13.1) with ESMTP id o5GBr3oS005469 for ; Wed, 16 Jun 2010 21:53:03 +1000 Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o5GBun7d1413342 for ; Wed, 16 Jun 2010 21:56:49 +1000 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o5GBunLX017019 for ; Wed, 16 Jun 2010 21:56:49 +1000 From: Gautham R Shenoy Date: Wed, 16 Jun 2010 17:26:46 +0530 Message-ID: <20100616115404.10988.62371.stgit@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offloading framework List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Qemu-development List Cc: Anthony Liguori , Avi Kivity , Corentin Chary , Paolo Bonzini Hi, This is the v4 of the patch-series to have a generic asynchronous task offloading framework (called threadlets) within qemu. V3 can be found here: http://lists.gnu.org/archive/html/qemu-devel/2010-06/index.html Changes from V3: ===================================================================== - Did away with the qemu-thread wrappers for handling pthread_attr_t type following review comments for V3. - Added qemu-thread wrappers for pthread_barrier_init() and pthread_barrier_wait(). - Added a flush_threadlet_queue() helper which allows the caller to wait till all the queued tasks have finished processing. - Added a global queue that can be used by most subsystems to offload tasks. The flexibility to allow individual subsystems to create their private queue with associated thread-pool has been retained. - Fixed the Copyrights in the newly introduced file to reflect the copyrights of the borrowed code. - Renamed the helper functions to reflect their use. Added comments for each of the helpers. - Typedef'd the structs to adhere to the qemu coding style. Description ===================================================================== This patch series decouples the asynchronous threading framework implementation from posix-aio-compat.c to implement a generic asynchronous task offloading threading framework called threadlets which can be used by other subsystems within QEMU. Currently within QEMU, the AIO subsystem (paio) creates a bunch of asynchronous threads to offload any blocking operations so that the vcpu threads and the IO thread can go back to servicing any other guest requests. This offloading framework can be used by subsystems such as virtio-9p, Asynchronous encoding for vnc-server, so that the vcpu thread can offload blocking operations on to the asynchronous threads and resume servicing any other guest requests. The asynchronous threads, after finishing the blocking operations can then transfer the control over to the IO thread so that the latter can handle the post_blocking_operation(). The patch series passed fsstress test without any issues. Could it be considered for inclusion ? --- Aneesh Kumar K.V (1): qemu: Generic task offloading framework: threadlets Gautham R Shenoy (2): qemu: Add qemu-barrier support to qemu-thread framework. qemu: Convert AIO code to use threadlets. Makefile.objs | 3 + async-work.c | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++++ async-work.h | 69 +++++++++++++++++++ posix-aio-compat.c | 152 +++++++----------------------------------- qemu-thread.c | 23 ++++++ qemu-thread.h | 9 +++ 6 files changed, 313 insertions(+), 129 deletions(-) create mode 100644 async-work.c create mode 100644 async-work.h -- Thanks and Regards gautham.