VM 的基于权重的块 IO 控制

VM 的基于权重的块 IO 控制

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

答案1

布尔基奥在cgroup 术语代表访问块设备上的 I/O。它似乎并不是要规范软件开发人员手头用于 I/O 相关目的的所有不同方式。

它似乎主要针对设备,而不是软件访问设备的方式。它可以限制其他进程的 iops 数量、带宽或权重等。 blockio 目前似乎不支持缓冲写入。它位于官方文档:

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

如果你看一下这个演示文稿来自 Red Hat 的 Linda Wang 和 Bob Kozdemba 的第 20 页以上的内容,您将看到该图是关于每个虚拟机的设备带宽,而不是关于随机 I/O、阻塞 I/O 和异步 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

答案2

你可能想使用 ionice,它很不错,但是对于 IO 来说。

相关内容