[Gluster-devel] swapcontest usage in syncio.c

Jeff Darcy jdarcy at redhat.com
Tue Aug 7 20:45:50 UTC 2012

On Tue, 7 Aug 2012 20:13:35 +0200
manu at netbsd.org (Emmanuel Dreyfus) wrote:

> Anand Avati <anand.avati at gmail.com> wrote:
> What was behind the decision to use swapcontext, btw? Why not just
> have a thread for each task?

I should probably let the authors speak for themselves, but I suspect
it's because operations like self-heal and rebalance can be expected to
generate a *lot* of sync calls.  Threads do still consume non-trivial
resources, and switches between them still involve a trip through the
scheduler, even if they share an address space etc.  I just ran a quick
experiment, and ping-ponging between tasks via swapcontext was ~9x as
fast as via pthreads.  I didn't measure the effect on memory
consumption, but it's likely to be at least as large as the effect on
execution time.

More information about the Gluster-devel mailing list