Gewichtete Block-E / A-Steuerung für VMs

13

Ich verwalte meine virtuellen Maschinen mit KVM. Ich versuche, die für VMs bereitgestellten Ressourcen zu begrenzen. Mit libvirt / cgroups kann ich die für VMs zugewiesene CPU und den zugewiesenen Speicher begrenzen. Jetzt möchte ich die für jede VM zugewiesene Festplattenzeit durch Anwenden einiger Gewichte steuern. Ich habe mir blkio control von cgroups angesehen. Da VM nur ein Linux-Prozess ist, kann ich cgroups verwenden, bin mir aber nicht sicher, ob es auch für asynchrone E / A funktioniert. Wenn nicht, kann jemand eine gute alternative Lösung vorschlagen?

Sethu
quelle

Antworten:

2

Blkio steht in der Gruppenterminologie für den Zugriff auf E / A auf Blockgeräten . Es scheint nicht darum zu gehen, die verschiedenen Möglichkeiten zu regeln, die Softwareentwickler für I / O-Zwecke zur Verfügung haben.

Es scheint hauptsächlich auf E / A auf Geräten ausgerichtet zu sein , nicht auf die Art und Weise, wie Software auf Geräte zugreifen kann. Es kann unter anderem die Anzahl der Iops, die Bandbreite oder die Gewichtung bei anderen Prozessen begrenzen. Es scheint, dass gepuffertes Schreiben derzeit von blockio nicht unterstützt wird. Es ist in der offiziellen Dokumentation :

Derzeit funktioniert das Block-E / A-Subsystem nicht für gepufferte Schreibvorgänge. Es richtet sich hauptsächlich an direkte E / A, obwohl es für gepufferte Leseoperationen funktioniert.

Wenn Sie sich diese Präsentation ansehen von Linda Wang und Bob Kozdemba von Red Hat auf Seite 20+ ansehen, werden Sie feststellen, dass es sich bei der Grafik um die Gerätebandbreite pro VM handelt, nicht um zufällige oder blockierende oder asynchrone E / A.

Offenbar hat Red Hat kürzlich daran gearbeitet , es direkt in virsh zu implementieren. Es wurde veröffentlicht letzte Woche in libvirt 0.9.9. In ein paar Monaten können Sie so etwas in Ihrer Lieblingsdistribution tun:

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

Vielleicht möchten Sie ionice verwenden, es ist nett, aber für IO.

Fer Enaf
quelle
1
Ist ioniceeine bessere Alternative als die blkiovon cgroups? Bietet es etwas, was die aktuelle Lösung des OP nicht bietet? Wissen Sie, wie es mit asynchronem E / A zusammenhängt?
Caleb
Caleb, es ist großartig, wenn Sie nur einen Überblick darüber geben können, was asynchrones E / A ist und wie es sich in Bezug auf ein Betriebssystem von synchronem E / A unterscheidet.
So
@Caleb: Siehe oben.
Faheem Mitha