Linux
VM 的基於權重的塊 IO 控制
我使用 KVM 來管理我的虛擬機。我試圖限制為虛擬機提供的資源。我可以使用 libvirt/cgroups 限制為 VM 分配的 CPU 和記憶體。現在我想通過應用一些權重來控制分配給每個 VM 的磁碟時間。我查看了 cgroups 中的 blkio 控制。由於 VM 只是一個 Linux 程序,我將能夠使用 cgroups,但我不確定它是否也適用於非同步 IO。如果沒有,有人可以提出一個好的替代解決方案嗎?
cgroup 術語中的Blkio代表訪問塊設備上的 I/O。它似乎並不是為了規範軟體開發人員為 I/O 相關目的而使用的所有不同方式。
它似乎主要針對設備上的 I/O ,而不是軟體訪問設備的方式。在其他方面,它可以限制 iops 的數量、頻寬或與其他程序的權重。blockio 目前似乎不支持緩衝寫入。它在官方文件中:
目前,Block 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