qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode toggle
@ 2012-05-22 16:17 Paolo Bonzini
  2012-05-22 16:17 ` [Qemu-devel] [PATCH 1.2 1/7] block: flush in writethrough mode after writes Paolo Bonzini
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Paolo Bonzini @ 2012-05-22 16:17 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

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(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-06-04 10:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-22 16:17 [Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode toggle Paolo Bonzini
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

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).