qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode to


From: Paolo Bonzini
Subject: [Qemu-devel] [PATCH 1.2 0/7] Manual writethrough cache and cache mode toggle
Date: Tue, 22 May 2012 18:17:11 +0200

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]