qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offload


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offloading framework
Date: Wed, 16 Jun 2010 08:09:49 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Lightning/1.0b1 Thunderbird/3.0.4

On 06/16/2010 06:56 AM, Gautham R Shenoy wrote:
Hi,

This is the v4 of the patch-series to have a generic asynchronous task
offloading framework (called threadlets) within qemu.

Semantically, a threadlet is identical to a QEMUBH except that a QEMUBH holds the qemu_mutex and a threadlet doesn't.

I'd suggest naming these functions similar to QEMUBH to the point where it makes sense to use the same structure. Instead of the normal qemu_bh_schedule, I'd suggest having a qemu_bh_schedule_unlocked().

Also, please introduce a short document in docs/ that gives a brief overview of how to use unlocked bottom halves especially focusing on the considerations with respect to what should and shouldn't be done in these functions. It would be helpful (although optional) to document traditional bottom halves in the same file.

Regards,

Anthony Liguori

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





reply via email to

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