Contrôle d'E / S de bloc basé sur le poids pour les machines virtuelles

13

J'utilise KVM pour gérer mes machines virtuelles. J'essaie de limiter les ressources fournies pour les machines virtuelles. Je suis en mesure de limiter le processeur et la mémoire alloués aux machines virtuelles à l'aide de libvirt / cgroups. Maintenant, je veux contrôler le temps disque alloué à chaque machine virtuelle en appliquant des pondérations. J'ai regardé le contrôle blkio des cgroups. Étant donné que la VM n'est qu'un processus Linux, je pourrai utiliser des groupes de contrôle, mais je ne sais pas si cela fonctionnera également pour les E / S asynchrones. Sinon, quelqu'un peut-il suggérer une bonne solution alternative?

sethu
la source

Réponses:

2

Blkio dans la terminologie cgroup signifie l' accès aux E / S sur les périphériques de bloc . Il ne semble pas s'agir de réglementer toutes les différentes manières dont les développeurs de logiciels ont à portée de main à des fins liées aux E / S.

Il semble viser principalement les E / S sur les appareils , pas la façon dont le logiciel a accès aux appareils. Cela peut limiter le nombre d'iops, la bande passante ou un poids avec d'autres processus, entre autres choses. Il semble que l'écriture en mémoire tampon ne soit pas prise en charge par blockio pour le moment. C'est dans la documentation officielle :

Actuellement, le sous-système Block I / O ne fonctionne pas pour les opérations d'écriture en mémoire tampon. Il est principalement destiné aux E / S directes, bien qu'il fonctionne pour les opérations de lecture en mémoire tampon.

Si vous jetez un coup d'œil à cette présentation de Linda Wang et Bob Kozdemba de Red Hat, à la page 20+, vous verrez que le graphique concerne la bande passante du périphérique par VM, pas le hasard vs le blocage vs les E / S asynchrones.

Il semble que Red Hat ait récemment travaillé pour l'implémenter directement dans virsh. Il est sorti la semaine dernière dans libvirt 0.9.9. Dans quelques mois, vous pourrez faire quelque chose comme ça dans votre distribution préférée:

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

Vous voudrez peut-être utiliser ionice, c'est comme gentil mais pour IO.

Fer Enaf
la source
1
Est ioniceune meilleure alternative que l'utilisation blkiode cgroups? Fournit-il quelque chose que la solution actuelle du PO ne fournit pas? Savez-vous comment cela se rapporte aux E / S asynchrones?
Caleb
Caleb, ce sera génial si vous pouvez simplement donner un aperçu de ce qu'est l'E / S asynchrone et en quoi diffère-t-il de l'E / S synchrone par rapport à un système d'exploitation.
sethu
@Caleb: Voir ci-dessus.
Faheem Mitha