基于权重的VM块IO控制


13

我使用KVM管理我的虚拟机。我试图限制为VM提供的资源。我可以使用libvirt / cgroups限制为VM分配的CPU和内存。现在,我想通过应用一些权重来控制为每个VM分配的磁盘时间。我从cgroups看了blkio控制。由于VM只是一个Linux进程,因此我将能够使用cgroups,但是我不确定它是否也适用于异步IO。如果没有,有人可以提出一个好的替代解决方案吗?

Answers:


2

Blkio在cgroup中术语代表访问I / O块设备上。它似乎与规范软件开发人员为I / O相关的目的而准备的所有不同方式无关。

它似乎主要针对设备上的I / O ,而不是软件访问设备的方式。在其他方面,它可以限制iops的数量,带宽或权重。似乎blockio目前不支持缓冲写入。在官方文档中

当前,块I / O子系统不适用于缓冲的写操作。尽管它适用于缓冲读取操作,但它主要针对直接I / O。

如果您看一下Red Hat的Linda Wang和Bob Kozdemba的演示,第20+页,您会发现该图是关于每个VM的设备带宽,而不是关于随机,阻塞,异步I / O。

似乎Red Hat 最近有 工作将其直接实现到virsh中。已公布的上周libvirt的0.9.9。再过几个月,您就可以在自己喜欢的发行版中执行以下操作:

virsh blkiotune domA --device-weights /dev/sda,250
virsh blkiotune domB --device-weights /dev/sda,750

0

您可能要使用ionice,这很不错,但用于IO。


1
ionice不是用一个更好的选择blkio,从cgroup的?它是否提供了OP当前解决方案无法提供的功能?您知道它与异步IO有何关系吗?
卡莱布

如果您仅能就异步IO及其相对于操作系统的同步IO有何不同,那么Caleb将会很棒。
sethu 2011年

@Caleb:见上文。
Faheem Mitha
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.