From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com
Subject: [Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode toggle
Date: Tue, 22 May 2012 18:17:11 +0200 [thread overview]
Message-ID: <1337703438-9764-1-git-send-email-pbonzini@redhat.com> (raw)
This is an alternative implementation of writethrough caching. By always
opening protocols in writethrough mode and doing flushes manually after
every write, it achieves two results: 1) it makes flipping the cache mode
extremely easy; 2) it lets formats control flushes during metadata updates
even in writethrough mode, which makes the updates more efficient; 3)
it makes cache=writethrough automatically flush metadata without needing
extra work in the formats.
In practice, the performance result is a wash. I measured "make -j3
vmlinux" on a 2-core guest/4-core host, with 2GB memory in the guest
and 8GB in the host.
Performance was measured starting qemu-kvm with an empty qcow2 image,
a virtio disk and cache=writethrough (F16 installation + exploded kernel
tarball in the backing file), and the results are as follows:
without patch:
real 9m22.416s user 12m8.955s sys 3m46.331s
real 9m21.602s user 12m20.124s sys 3m51.126s
real 9m22.258s user 12m14.900s sys 3m48.595s
with patch:
real 9m17.617s user 12m16.837s sys 3m48.637s
real 9m18.926s user 12m20.083s sys 3m50.458s
real 9m15.751s user 12m41.944s sys 3m56.447s
Unlike the RFC, this is tested exactly with these seven patches. The RFC
was tested with follow-up cleanups that hid the problem in patch 3.
v1->v2: only patch 3 changed, was completely backwards in v1
Paolo Bonzini (7):
block: flush in writethrough mode after writes
savevm: flush after saving vm state
block: always open protocol in writeback mode
block: copy enable_write_cache in bdrv_append
block: add bdrv_set_enable_write_cache
ide: support enable/disable write cache
qcow2: always operate caches in writeback mode
block.c | 20 +++++++++++++++++---
block.h | 1 +
block/qcow2-cache.c | 25 ++-----------------------
block/qcow2-refcount.c | 12 ------------
block/qcow2.c | 7 ++-----
block/qcow2.h | 5 +----
hw/ide/core.c | 18 +++++++++++++++---
savevm.c | 2 +-
8 files changed, 39 insertions(+), 51 deletions(-)
next reply other threads:[~2012-05-22 16:17 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-22 16:17 Paolo Bonzini [this message]
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 1/7] block: flush in writethrough mode after writes Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 2/7] savevm: flush after saving vm state Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 3/7] block: always open protocol in writeback mode Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 4/7] block: copy enable_write_cache in bdrv_append Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 5/7] block: add bdrv_set_enable_write_cache Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 6/7] ide: support enable/disable write cache Paolo Bonzini
2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 7/7] qcow2: always operate caches in writeback mode Paolo Bonzini
2012-06-04 10:17 ` [Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode toggle Kevin Wolf
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=1337703438-9764-1-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=kwolf@redhat.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).