qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Ulrich Drepper <drepper@redhat.com>
To: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Cc: mtosatti@redhat.com,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Avi Kivity <avi@redhat.com>
Subject: [Qemu-devel] Re: [PATCH v2] qemu-kvm: Speed up of the dirty-bitmap-traveling
Date: Wed, 10 Feb 2010 05:10:18 -0800	[thread overview]
Message-ID: <4B72B03A.6020208@redhat.com> (raw)
In-Reply-To: <4B728FF9.6010707@lab.ntt.co.jp>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/10/2010 02:52 AM, OHMURA Kei wrote:

>      for (i = 0; i < len; i++) {
> -        c = bitmap[i];
> -        while (c > 0) {
> -            j = ffsl(c) - 1;
> -            c &= ~(1u << j);
> -            page_number = i * 8 + j;
> -            addr1 = page_number * TARGET_PAGE_SIZE;
> -            addr = offset + addr1;
> -            ram_addr = cpu_get_physical_page_desc(addr);
> -            cpu_physical_memory_set_dirty(ram_addr);
> -            n++;
> +        if (bitmap_ul[i] != 0) {
> +            c = le_bswap(bitmap_ul[i], HOST_LONG_BITS);
> +            while (c > 0) {
> +                j = ffsl(c) - 1;
> +                c &= ~(1ul << j);
> +                page_number = i * HOST_LONG_BITS + j;
> +                addr1 = page_number * TARGET_PAGE_SIZE;
> +                addr = offset + addr1;
> +                ram_addr = cpu_get_physical_page_desc(addr);
> +                cpu_physical_memory_set_dirty(ram_addr);
> +            }

If you're optimizing this code you might want to do it all.  The
compiler might not see through the bswap call and create unnecessary
data dependencies.  Especially problematic if the bitmap is really
sparse.  Also, the outer test is != while the inner test is >.  Be
consistent.  I suggest to replace the inner loop with

      do {
        ...
      } while (c != 0);

Depending on how sparse the bitmap is populated this might reduce the
number of data dependencies quite a bit.

- -- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAktysDoACgkQ2ijCOnn/RHS2zwCfcj+G0S5ZAEA8MjGAVI/rKjJJ
+0oAnA4njIrwx3/5+o43ekYeYXSNyei0
=ukkz
-----END PGP SIGNATURE-----

  reply	other threads:[~2010-02-10 13:10 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-10 10:52 [Qemu-devel] [PATCH v2] qemu-kvm: Speed up of the dirty-bitmap-traveling OHMURA Kei
2010-02-10 13:10 ` Ulrich Drepper [this message]
2010-02-10 13:20 ` [Qemu-devel] " Avi Kivity
2010-02-10 15:54   ` Anthony Liguori
2010-02-10 15:57     ` Avi Kivity
2010-02-10 16:00     ` Alexander Graf
2010-02-10 16:35       ` Anthony Liguori
2010-02-10 16:43         ` Alexander Graf
2010-02-10 16:46           ` Avi Kivity
2010-02-10 16:47             ` Alexander Graf
2010-02-10 16:52               ` Avi Kivity
2010-02-10 16:54                 ` Alexander Graf
2010-02-10 16:43         ` Avi Kivity
2010-02-10 15:55   ` Anthony Liguori
2010-02-12  2:03     ` OHMURA Kei
2010-02-14 12:34       ` Avi Kivity
2010-02-15  6:12         ` OHMURA Kei
2010-02-15  8:24           ` Alexander Graf
2010-02-16 11:16             ` OHMURA Kei
2010-02-16 11:18               ` Alexander Graf
2010-02-17  9:42                 ` OHMURA Kei
2010-02-17  9:46                   ` Alexander Graf
2010-02-18  5:57                     ` OHMURA Kei
2010-02-18 10:30                       ` Alexander Graf
2010-02-17  9:47                   ` Avi Kivity
2010-02-17  9:49                     ` Alexander Graf

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=4B72B03A.6020208@redhat.com \
    --to=drepper@redhat.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=ohmura.kei@lab.ntt.co.jp \
    --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).