Re: [PATCH 4/6] kvm tools: Add rwlock wrapper

Mathieu Desnoyers
2011-05-26T23:09:25Z

* Sasha Levin (levinsasha928@gmail.com) wrote:
> On Thu, 2011-05-26 at 21:21 +0300, Pekka Enberg wrote:
> > On Thu, May 26, 2011 at 9:11 PM, Avi Kivity <avi@redhat.com> wrote:
> > > On 05/26/2011 09:05 PM, Ingo Molnar wrote:
> > >>
> > >> >
> > >> > I've added some rwlocks because of what Ingo said yesterday about
> > >> > adding/removing devices after the first initialization phase.
> > >> >
> > >> > Take MMIO lock for example: Since we can now run SMP guests, we may
> > >> > have multiple MMIO exits (one from each VCPU thread). Each of those
> > >> > exits leads to searching the MMIO rbtree.
> > >> >
> > >> > We can use a mutex to lock it, but it just means that those threads
> > >> > will be blocked there instead of concurrently searching the MMIO
> > >> > tree which makes the search linear instead of parallel.
> > >> >
> > >> > It's hard to bring 'real' numbers at this stage because the only
> > >> > 'real' device we have which uses MMIO is the VESA driver, and we
> > >> > can't really simulate many VCPUs writing to it :)
> > >>
> > >> I'd suggest keeping it simple first - rwlocks are nasty and will
> > >> bounce a cacheline just as much.
> > >
> > > Well, this is the first case where tools/kvm can do better than qemu with
> > > its global lock, so I think it's worth it.
> > >
> > >> If lookup scalability is an issue we can extend RCU to tools/kvm/.
> > >
> > > Definitely rcu is a perfect patch for mmio dispatch.
> >
> > Userspace RCU code is here, Sasha, if you feel like tackling this:
> >
> > http://lttng.org/urcu
> >
> > :-)
> >
> > I'm CC'ing Paul and Mathieu as well for urcu.
>
> Sounds good!
>
> Should be quite an addition and could be used in more places than just
> the MMIO dispatcher.

Hi Sasha,

Feel free to let me know if you need any help, have questions, or need
improvements to liburcu. I'd be interested to know about the specifics
of you read vs update workload rate. Also, if you need more thorough
information, we have a paper describing all the liburcu flavors. It
might help you choose the one better suited for your needs. (if you
don't care that much about fine-tuning, my recommendation is to stick
with the "urcu.h"/"liburcu" flavor). Link to the paper preprint can be
found at http://www.efficios.com/publications

Thanks!

Mathieu

--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.