Enable cache=None and io=native by default for block devices

This is where performance issues hit the most. This changes the
RHEL default to remove cache=None for all file volumes. If anyone
cares they can speak up, but it seems an overly unnecessary deviation
from upstream qemu.
This commit is contained in:
Cole Robinson 2013-10-02 16:09:05 -04:00
parent 8d59a7132b
commit fb7868db19
16 changed files with 30 additions and 32 deletions

View File

@ -206,7 +206,8 @@ def read_file(filename):
def diff_compare(actual_out, filename=None, expect_out=None):
"""Compare passed string output to contents of filename"""
if not expect_out:
#file(filename, "w").write(actual_out)
#if filename:
# file(filename, "w").write(actual_out)
expect_out = read_file(filename)
diff = "".join(difflib.unified_diff(expect_out.splitlines(1),

View File

@ -25,7 +25,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -24,7 +24,7 @@
<target dev="fda" bus="fdc"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="raw" cache="none"/>
<driver name="qemu" type="raw"/>
<source file="/tmp/test.img"/>
<target dev="vda" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -21,7 +21,7 @@
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="hda" bus="ide"/>
</disk>

View File

@ -26,7 +26,7 @@
<target dev="hda" bus="ide"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/iscsi-pool/diskvol1"/>
<target dev="hdb" bus="ide"/>
</disk>

View File

@ -31,7 +31,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -29,7 +29,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="vdb" bus="virtio"/>
</disk>

View File

@ -25,7 +25,7 @@
<target dev="hda" bus="ide"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="hdb" bus="ide"/>
</disk>

View File

@ -24,7 +24,7 @@
<target dev="hda" bus="ide"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="hdb" bus="ide"/>
</disk>

View File

@ -24,7 +24,7 @@
<target dev="hda" bus="ide"/>
</disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/dev/disk-pool/diskvol1"/>
<target dev="hdb" bus="ide"/>
</disk>

View File

@ -28,7 +28,6 @@ import re
import urlgrabber.progress as progress
import virtinst
from virtinst import diskbackend
from virtinst import util
from virtinst import VirtualDevice
@ -716,26 +715,24 @@ class VirtualDisk(VirtualDevice):
if volobj:
self._change_backend(None, volobj)
def _set_rhel_defaults(self):
if not self.conn.is_qemu():
return
if not self.is_disk():
return
# Enable cache=none for disk devs
if not self.driver_cache:
self.driver_cache = self.CACHE_MODE_NONE
# Enable AIO native for block devices
if (not self.driver_io and self.type == self.TYPE_BLOCK):
self.driver_io = self.IO_MODE_NATIVE
def set_defaults(self):
if self.is_cdrom():
self.read_only = True
if virtinst.enable_rhel_defaults:
self._set_rhel_defaults()
if not self.conn.is_qemu():
return
if not self.is_disk():
return
if not self.type == self.TYPE_BLOCK:
return
# Enable cache=none and io=native for block devices. Would
# be nice if qemu did this for us but that time has long passed.
if not self.driver_cache:
self.driver_cache = self.CACHE_MODE_NONE
if not self.driver_io:
self.driver_io = self.IO_MODE_NATIVE
def is_size_conflict(self):
"""