2.5. Groupes de contrôle
Red Hat Enterprise Linux fournit de nombreuses options utiles au réglage des performances. Les systèmes de grande taille, allant jusqu'à des centaines de processeurs, peuvent être réglé afin de délivrer de superbes performances. Mais le réglage de tels systèmes requiert une expertise considérable ainsi qu'une charge de travail bien définie. Lorsque les systèmes de grande taille étaient chers et moins nombreux, il était acceptable de leur offrir un traitement de faveur. Maintenant que ces systèmes sont couramment utilisés, des outils plus efficaces sont nécessaires.
Pour compliquer les choses, des systèmes plus puissants sont maintenant utilisés pour la consolidation de services. Des charges de travail qui étaient avant exécutées sur quatre à huit serveurs sont maintenant placées sur un seul serveur. Et comme mentionné plus tôt dans la Section 1.2.1, « Informatique parallèle », de nos jours, de nombreux systèmes à moyenne portée contiennent davantage de cœurs que les machines à haute performance d'hier.
De nombreuses applications modernes sont conçues pour le traitement parallèle, utilisant de multiples threads ou processus pour améliorer les performances. Cependant, peu d'applications peuvent faire usage de plus de huit threads de manière efficace. Ainsi, de multiples applications doivent habituellement être installées sur des systèmes à 32 CPU pour maximiser la capacité.
Prenez en considération la situation suivante : des systèmes de petite taille et peu coûteux sont maintenant à égalité avec les performances des machines chères et de haute performance d'hier. Les machines moins chères de haute performance ont offert aux architectes la possibilité de consolider davantage de services sur moins de machines.
Cependant, certaines ressources (telles que les E/S et les communications réseau) sont partagées et n'augmentent pas à la même vitesse que le compte des CPU. Ainsi, un système hébergeant de multiples applications peut expérimenter des performances générales dégradées lorsqu'une application s'accapare trop d'une ressource en particulier.
Pour répondre à ce problème, Red Hat Enterprise Linux 6 prend maintenant en charge les groupes de contrôle (cgroups). Les cgroups permettent aux administrateurs d'allouer des ressources aux tâches spécifiques selon les besoins. Cela signifie par exemple être en mesure d'allouer 80% de quatre CPU, 60 Go de mémoire et 40% des E/S de disque à une application de base de données. Une application web exécutée sur le même système pourrait recevoir deux CPU, 2 Go de mémoire et 50% de la bande passante du réseau.
Par conséquent, les applications de la base de données et du web délivreront de meilleures performances car le système les empêchera de consommer les ressources système de manière excessive. En outre, de nombreux aspects des cgroups se règlent automatiquement, permettant au système de répondre conformément aux changements de la charge de travail.
Un cgroup possède deux composants majeurs :
- Une liste de tâches assignées au cgroup
- Des ressources allouées à ces tâches
Les tâches assignées au cgroup sont exécutées dans le cgroup. Toute tâche enfant engendrée sera aussi exécutée dans le cgroup. Cela permet à un administrateur de gérer une application entière en tant qu'unité unique. Un administrateur peut aussi configurer des allocations pour les ressources suivantes :
- CPUsets
- Mémoire
- E/S
- Réseau (bande passante)
Dans les CPUsets, les cgroups permettent aux administrateurs de configurer le nombre de CPU, les affinités pour des CPU ou nœuds[3] spécifiques et combien de temps CPU est utilisé par un ensemble de tâches. L'utilisation des cgroups pour configurer des CPUsets est vitale pour assurer de bonnes performances générales, empêchant ainsi à une application de consommer trop de ressources au détriment d'autres tâches tout en s'assurant simultanément que l'application ne manque pas de temps CPU.
Les bandes passantes des E/S et du réseau sont gérées par d'autres contrôleurs de ressources. Les contrôleurs de ressources vous permettent de déterminer quelle quantité de bande passante peut être consommée par les tâches dans un cgroup et de s'assurer que les tâches dans un cgroup ne consomment pas trop de ressources et n'en manquent pas non plus.
Les cgroups permettent à l'administrateur de définir et d'allouer, à un haut niveau, les ressources systèmes dont diverses applications ont consommé et vont consommer. Le système gère et équilibre ensuite de manière automatique les diverses applications, délivrant de bonnes performances prévisibles et optimisant les performances du système en général.
Pour obtenir des informations supplémentaires sur la manière d'utiliser les groupes de contrôle, veuillez consulter le Guide de gestion des ressources, disponible sur http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.