Chapitre 4. Gestion des ressources

Mise en application du plafond CPU des cgroups

CFS (« Completely Fair Scheduler ») dans le noyau Linux est un planificateur de partage proportionnel qui divise le temps CPU proportionnellement entre des groupes de tâches en fonction de la priorité/du poids de la tâche ou des parts assignée(s) au groupe de tâches. Dans CFS, un groupe de tâches peut recevoir plus que sa part de CPU s'il y a suffisamment de cycles CPU inactifs disponibles sur le système, dû à la nature conservant le travail du planificateur.

Cependant, il existe aussi des scénarios d'entreprise, répertoriés ci-dessous, dans lesquels offrir plus que le partage CPU souhaité n'est pas acceptable :
Paiement à l'utilisation
Dans les systèmes d'entreprise répondant à de multiples clients, les fournisseurs de services cloud doivent assigner un montant fixe de temps CPU à l'invité virtuel en se basant sur le niveau de service.
Garanties de niveau de service
Le client demande un pourcentage de ressources CPU sans interruptions de service pour chaque invité virtuel.
Dans ces scénarios, le planificateur doit clairement stopper la consommation des ressources CPU d'un groupe de tâches s'il excède une limite prédéterminée. Ceci est habituellement accompli en accélérant le groupe de tâches lorsqu'il a complètement consommé le temps CPU qui lui était alloué.
La mise en application du plafond CPU des cgroups est une addition très importante au répertoire des fonctionnalités de Red Hat Enterprise Linux, particulièrement dans le cas d'utilisation répertorié ci-dessus. La mise en application du plafond CPU des cgroups est fournie par le planificateur Credit Scheduler dans Xen, ainsi que par le planificateur VMware ESX.
Amélioration de l'évolutivité du contrôleur CPU des cgroups sur les systèmes SMP

Les cgroups font partie intégrante de Red Hat Enterprise Linux 6, et libvirt crée un cgroup par modèle invité. Sur les systèmes SMP de grande taille, une augmentation du nombre de cgroups a détérioré la performance. Cependant, dans Red Hat Enterprise Linux 6.2, l'évolutivité des CPU des cgroups a été améliorée de manière importante, rendant possible la création et l'exécution de plusieurs centaines de cgroups à la fois sans implications pour la performance.

En plus de l'amélioration de l'évolutivité, un paramètre ajustable /proc, dd sysctl_sched_shares_window, a été ajouté, sa valeur par défaut est de 10 ms.
Amélioration de la performance du contrôleur d'E/S des cgroups

Le design du contrôleur d'E/S des cgroups a été amélioré pour réduire l'utilisation des verrous dans le contrôleur des E/S, résultant ainsi en une performance améliorée. Le contrôleur des E/S prend maintenant aussi en charge les statistiques par cgroup.

Amélioration de la performance du contrôleur de mémoire des cgroups

Red Hat Enterprise Linux 6.2 présente une amélioration du traitement de l'utilisation de mémoire sur le contrôleur de mémoire en réduisant l'allocation de traitement pour la matrice page_cgroup de 37%. En outre, le pointeur direct page_cgroup-to-page a été supprimé, améliorant la performance du contrôleur mémoire.

Valeur par défaut pour la variable CFQ group_isolation

La valeur par défaut de la variable group_isolation de CFQ a été modifiée de 0 à 1 (/sys/block/<device>/queue/iosched/group_isoaltion). Après divers tests et de nombreux rapports d'utilisateurs, il a été trouvé que la valeur par défaut de 1 était plus utile. Lorsque définit sur 0, toutes les files d'E/S aléatoires deviennent partie intégrante du cgroup racine et non du cgroup dont fait partie l'application. Par conséquent, ceci n'apporte aucune différenciation pour les applications.

Note

Pour obtenir davantage d'informations sur la gestion des ressources et les groupes de contrôle, reportez-vous au Guide de gestion des ressources Red Hat Enterprise Linux 6.2.