7.4. Block I/O Tuning Techniques
7.4. Block I/O Tuning Techniques This section describes more techniques for tuning block I/O performance in virtualized environments. 7.4.1. Disk I/O Throttling When several virtual machines are running simultaneously, they can interfere with system performance by using excessive disk I/O. Disk I/O throttling in KVM provides the ability to set a limit on disk I/O requests sent from virtual machines to the host machine. This can prevent a virtual machine from over-utilizing shared resources and impacting the performance of other virtual machines. Disk I/O throttling can be useful in various situations, for example when guest virtual machines belonging to different customers are running on the same host, or when quality of service guarantees are given for different guests. Disk I/O throttling can also be used to simulate slower disks. I/O throttling can be applied independently to each block device attached to a guest and supports limits on throughput and I/O operations. Use the virsh blkdeviotune command to set I/O limits for a virtual machine: Device specifies a unique target name ( <target dev='name'/> ) or source file ( <source file='name'/> ) for one of the disk devices attached to the virtual machine. Use the virsh domblklist command for a list of disk device names. Optional parameters include: total-bytes-sec The total throughput limit in bytes per second. read-bytes-sec The read throughput limit in bytes per second. write-bytes-sec The write throughput limit in bytes per second. total-iops-sec The total I/O operations limit per second. read-iops-sec The read I/O operations limit per second. write-iops-sec The write I/O operations limit per second. For example, to throttle vda on virtual_machine to 1000 I/O operations per second and 50 MB per second throughput, run this command: 7.4.2. Multi-Queue virtio-scsi Multi-queue virtio-scsi provides improved storage performance and scalability in the virtio-scsi driver. It enables each virtual CPU to have a separate queue and interrupt to use without affecting other vCPUs. 7.4.2.1. Configuring Multi-Queue virtio-scsi Multi-queue virtio-scsi is disabled by default on Red Hat Enterprise Linux 7. To enable multi-queue virtio-scsi support in the guest, add the following to the guest XML configuration, where N is the total number of vCPU queues:
virsh blkdeviotune virtual_machine device --parameter limit virsh blkdeviotune virtual_machine vda --total-iops-sec 1000 --total-bytes-sec 52428800 <controller type='scsi' index='0' model='virtio-scsi'> <driver queues=' N ' /> </controller>