From: Sasha Levin <levinsasha928@gmail.com>
To: Alexander Graf <agraf@suse.de>
Cc: Ingo Molnar <mingo@elte.hu>, Pekka Enberg <penberg@kernel.org>,
KVM list <kvm@vger.kernel.org>,
Cyrill Gorcunov <gorcunov@gmail.com>,
John Floren <john@jfloren.net>, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [PATCH] kvm tools, ui: Optimize SDL updates
Date: Sat, 04 Jun 2011 18:34:42 +0300 [thread overview]
Message-ID: <1307201682.30165.0.camel@lappy> (raw)
In-Reply-To: <D86B8FAA-2507-4A10-A92C-A268F1FBCA2F@suse.de>
On Sat, 2011-06-04 at 17:21 +0200, Alexander Graf wrote:
> On 04.06.2011, at 16:19, Sasha Levin wrote:
>
> > On Sat, 2011-06-04 at 15:48 +0200, Alexander Graf wrote:
> >> On 04.06.2011, at 14:04, Sasha Levin wrote:
> >>
> >>> On Sat, 2011-06-04 at 13:53 +0200, Ingo Molnar wrote:
> >>>> * Alexander Graf <agraf@suse.de> wrote:
> >>>>
> >>>>> Why would you need panning/scrolling for a fast FB? It's really an
> >>>>> optimization that helps a lot with VNC, but on local machines or
> >>>>> SDL you shouldn't see a major difference.
> >>>>
> >>>> Qemu's fb console scrolling graphics is pretty slow to me even
> >>>> locally so i assume that the dirty bitmap trick is not enough.
> >>>>
> >>>> VirtualBox graphics is very fast, but it probably has its own console
> >>>> abstraction and scrolling/2D/3D acceleration.
> >>>>
> >>>> Also, since tools/kvm/ is really also about learning interesting
> >>>> stuff, smooth scrolling was the historic first 'acceleration' usecase
> >>>> that video graphics cards added - before they evolved more complex 2D
> >>>> acceleration and then started doing 3D.
> >>>>
> >>>> Walking that path would allow us to do a gradual approach, while
> >>>> still having relevant functionality and enhancements at every step.
> >>>>
> >>>>> Unless you use the FB as MMIO. Qemu just maps the FB as RAM and
> >>>>> checks for dirty bitmap updates periodically. That way you don't
> >>>>> constantly exit due to MMIO and are good on speed. The slowness you
> >>>>> describe sounds a lot as if you don't do that trick.
> >>>>
> >>>> Correct, and i assumed we already do the dirty-bitmap trick:
> >>>>
> >>>> KVM_MEM_LOG_DIRTY_PAGES
> >>>> KVM_GET_DIRTY_LOG
> >>>>
> >>>> But you are right, we do not actually do that!
> >>>>
> >>>> Pekka, i think this should be the next step. We'll need scrolling
> >>>> after that ...
> >>>>
> >>>> In theory it would also be nice to tunnel the VGA text frame buffer
> >>>> over to the KVM tool - as serial console is not supported by most
> >>>> installers and default distro images. We could actually do a rather
> >>>> good job of emulating it via Slang/Curses.
> >>>
> >>> I doubt we could use dirty pages because unless guest VESA driver
> >>> supports panning, it will redraw the entire FB - which means that all
> >>> pages will be dirty.
> >>
> >> Please recheck the math and compare 60 dirty bitmap checks+flushes per second to a few million MMIO exits for every single pixel :).
> >
> > I might be missing something here, but if every single pixel changes due
> > to scrolling, doesn't it mean that all the pages will be marked as
> > 'dirty' anyway?
>
> Sure, but you don't need to exit to user space for every single pixel, but instead process the whole thing asynchronously. Just run kvm_stat while running your current implementation and you'll pretty soon realize what I'm talking about :).
I we use coalesced MMIO we only exit when the shared page is full. If we
mark a memory region as log dirty we won't get MMIO exits on it?
--
Sasha.
next prev parent reply other threads:[~2011-06-04 15:34 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-03 21:20 [PATCH] kvm tools, ui: Optimize SDL updates Pekka Enberg
2011-06-04 9:54 ` Ingo Molnar
2011-06-04 10:27 ` Alexander Graf
2011-06-04 10:42 ` Ingo Molnar
2011-06-04 10:46 ` Alexander Graf
2011-06-04 10:54 ` Ingo Molnar
2011-06-04 11:07 ` Alexander Graf
2011-06-04 11:53 ` Ingo Molnar
2011-06-04 11:59 ` Alexander Graf
2011-06-04 12:04 ` Sasha Levin
2011-06-04 13:48 ` Alexander Graf
2011-06-04 14:19 ` Sasha Levin
2011-06-04 15:21 ` Alexander Graf
2011-06-04 15:34 ` Sasha Levin [this message]
2011-06-04 15:40 ` Alexander Graf
2011-06-04 16:49 ` Sasha Levin
2011-06-05 8:41 ` Alexander Graf
2011-06-05 9:32 ` Alon Levy
2011-06-06 7:02 ` Gerd Hoffmann
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=1307201682.30165.0.camel@lappy \
--to=levinsasha928@gmail.com \
--cc=agraf@suse.de \
--cc=gorcunov@gmail.com \
--cc=john@jfloren.net \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=penberg@kernel.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