From: Sasha Levin <levinsasha928@gmail.com>
To: Avi Kivity <avi@redhat.com>
Cc: kvm@vger.kernel.org, Marcelo Tosatti <mtosatti@redhat.com>
Subject: Re: [PATCH] MMIO: Make coalesced mmio use a device per zone
Date: Tue, 19 Jul 2011 14:22:07 +0300 [thread overview]
Message-ID: <1311074527.9174.13.camel@lappy> (raw)
In-Reply-To: <4E255D44.8000107@redhat.com>
On Tue, 2011-07-19 at 13:32 +0300, Avi Kivity wrote:
> On 07/19/2011 01:17 PM, Sasha Levin wrote:
> > On Tue, 2011-07-19 at 12:59 +0300, Avi Kivity wrote:
> > > On 07/19/2011 12:53 PM, Sasha Levin wrote:
> > > > > Make these per-guest instead of global. The lock may be contended, and
> > > > > the list shouldn't hold items from different guests (why is it needed,
> > > > > anyway?)
> > > > >
> > > >
> > > > We only need the list for removal, since we only have the range we want
> > > > to remove, and we want to find all devices which contain this range.
> > > >
> > >
> > > All devices in the same guest which contain this range. Your patch
> > > removes devices from all guests.
> > >
> >
> > Yup. I've messed up guest-locality. Will fix.
> >
> > Also, I found this comment when increasing NR_IOBUS_DEVS:
> >
> > /*
> > * It would be nice to use something smarter than a linear search, TBD...
> > * Thankfully we dont expect many devices to register (famous last words :),
> > * so until then it will suffice. At least its abstracted so we can change
> > * in one place.
> > */
> >
> > Since so far we've registered 5-6 devices, and now it may increase
> > significantly (since we may want to do the same change to ioeventfds,
> > which work the same way) - how would you feel if we make devices
> > register range(s) and do a rbtree lookup instead of a linear search?
> >
>
> It makes sense. In fact your change is a good first step - so far it
> was impossible to to a clever search since the seaching code was not
> aware of the ranges (and could not be, since the single coalesced mmio
> device had multiple ranges).
>
> Rather than an rbtree, I suggest putting all ranges in an array and
> sorting it, then using binary search.
>
Why array over rbtree? An array would be heavier on register/unregister,
and using rbtree would let us easily eliminate any max device limit we
had so far.
We've had good experience using interval rbtree in /tools/kvm where we
did PIO and MMIO device mapping using an augmented rbtree which made
range lookups very simple and fast.
--
Sasha.
next prev parent reply other threads:[~2011-07-19 11:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-19 8:10 [PATCH] MMIO: Make coalesced mmio use a device per zone Sasha Levin
2011-07-19 8:48 ` Avi Kivity
2011-07-19 9:53 ` Sasha Levin
2011-07-19 9:59 ` Avi Kivity
2011-07-19 10:17 ` Sasha Levin
2011-07-19 10:32 ` Avi Kivity
2011-07-19 11:22 ` Sasha Levin [this message]
2011-07-19 11:45 ` Sasha Levin
2011-07-19 17:14 ` Jan Kiszka
2011-07-19 17:17 ` Avi Kivity
2011-07-19 17:23 ` Jan Kiszka
2011-07-19 19:28 ` Sasha Levin
2011-07-19 20:00 ` Jan Kiszka
2011-07-20 8:24 ` Avi Kivity
2011-07-20 8:43 ` Jan Kiszka
2011-07-20 8:52 ` Avi Kivity
2011-07-20 8:55 ` Jan Kiszka
2011-07-20 8:58 ` Avi Kivity
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=1311074527.9174.13.camel@lappy \
--to=levinsasha928@gmail.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.