qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Gautham R Shenoy <ego@in.ibm.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Qemu-development List <qemu-devel@nongnu.org>,
	Corentin Chary <corentin.chary@gmail.com>,
	Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offloading framework
Date: Wed, 16 Jun 2010 08:09:49 -0500	[thread overview]
Message-ID: <4C18CD1D.5040600@codemonkey.ws> (raw)
In-Reply-To: <20100616115404.10988.62371.stgit@localhost.localdomain>

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
>
>    

  parent reply	other threads:[~2010-06-16 13:10 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-16 11:56 [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offloading framework Gautham R Shenoy
2010-06-16 11:56 ` [Qemu-devel] [PATCH V4 1/3] qemu: Add qemu-barrier support to qemu-thread framework Gautham R Shenoy
2010-06-16 14:40   ` [Qemu-devel] " Anthony Liguori
2010-06-16 14:42     ` Paolo Bonzini
2010-06-16 11:56 ` [Qemu-devel] [PATCH V4 2/3] qemu: Generic task offloading framework: threadlets Gautham R Shenoy
2010-06-16 12:34   ` [Qemu-devel] " Paolo Bonzini
2010-06-16 14:22     ` Jamie Lokier
2010-06-16 14:27       ` Anthony Liguori
2010-06-16 14:29       ` Paolo Bonzini
2010-06-16 14:38         ` Anthony Liguori
2010-06-16 14:52           ` Paolo Bonzini
2010-06-16 15:20             ` Anthony Liguori
2010-06-16 15:47               ` Corentin Chary
2010-06-16 15:52                 ` Anthony Liguori
2010-06-16 16:06                   ` Corentin Chary
2010-06-17  9:16                     ` Gautham R Shenoy
2010-06-17  9:12               ` Gautham R Shenoy
2010-06-16 14:58           ` Jamie Lokier
2010-06-16 15:07             ` Jamie Lokier
2010-06-16 16:45               ` Paolo Bonzini
2010-06-17  8:53     ` Gautham R Shenoy
2010-06-17 10:09       ` Paolo Bonzini
2010-06-17 18:05         ` Anthony Liguori
2010-06-18  7:52           ` Paolo Bonzini
2010-06-16 11:57 ` [Qemu-devel] [PATCH V4 3/3] qemu: Convert AIO code to use threadlets Gautham R Shenoy
2010-06-16 13:09 ` Anthony Liguori [this message]
2010-06-16 13:18   ` [Qemu-devel] [PATCH V4 0/3] qemu: Threadlets: A generic task offloading framework Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C18CD1D.5040600@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=corentin.chary@gmail.com \
    --cc=ego@in.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).