From: Daniel Jacobowitz <drow@false.org>
To: Paul Brook <paul@codesourcery.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Huge TLB performance improvement
Date: Sun, 12 Nov 2006 10:07:15 -0500 [thread overview]
Message-ID: <20061112150714.GA10651@nevyn.them.org> (raw)
In-Reply-To: <200611121444.46898.paul@codesourcery.com>
On Sun, Nov 12, 2006 at 02:44:46PM +0000, Paul Brook wrote:
> > > Other targets have a hardware managed TLB. On a hardware managed TLB the
> > > OS treats it as if it were infinite size, and invalidation only occurs
> > > when a OS changes the mappings. On a software managed TLB "flushes" are
> > > more likely to occur during normal operation as TLB slots are reused.
> >
> > The excessive flushing for mips happens because Qemu doesn't properly
> > model the hardware's ASID handling.
>
> Are you sure? IIUC changing the ASID causes a full qemu TLB flush. The code
> we're tweaking here is for single page flush.
The brutal performance problem that Thiemo and I have been working on
is for single page flushes. With that solved, though, there's still
rather more memory management overhead than I'd like.
I was also thinking about pretending there were more TLB entries than
there actually are. We have a certain leeway to do this, because there
are two tlb write instructions: indexed and random. So there's a while
where the OS can't say for sure that an entry has been evicted. That
might cut down on flushes, or it might not. My hope would be holding
on to the evicted items until a global flush.
But what Thiemo is getting at, I think, is that we have to flush qemu's
TLB at every ASID switch. That's pretty lousy! It makes the ASID a
net performance penalty, instead of a boost. I don't see anything
obvious that I could do about it, though. The qemu tlb table only has
room for is_user and the virtual address.
> Actually that gives me an idea. When a TLB entry with a different ASID gets
> evicted we currently flush that page. This should be a no-op because we
> already did a full flush when the ASID changed.
Let me see if this makes any difference.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2006-11-12 15:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-06 14:59 [Qemu-devel] [PATCH] Huge TLB performance improvement Thiemo Seufer
2006-11-05 15:38 ` Daniel Jacobowitz
2006-11-12 1:10 ` Daniel Jacobowitz
2006-11-12 11:49 ` Laurent Desnogues
2006-11-12 13:52 ` Thiemo Seufer
2006-11-12 14:08 ` Paul Brook
2006-11-12 14:29 ` Thiemo Seufer
2006-11-12 14:44 ` Paul Brook
2006-11-12 15:07 ` Daniel Jacobowitz [this message]
2006-11-12 15:24 ` Daniel Jacobowitz
2006-11-12 15:26 ` Thiemo Seufer
2006-11-12 16:56 ` Daniel Jacobowitz
2006-11-12 17:49 ` Daniel Jacobowitz
2006-11-12 18:02 ` Dirk Behme
2006-11-12 22:13 ` Daniel Jacobowitz
2006-11-12 20:42 ` Paul Brook
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=20061112150714.GA10651@nevyn.them.org \
--to=drow@false.org \
--cc=paul@codesourcery.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).