Guide d'administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris

Chapitre 1 Introduction à la gestion des ressources Solaris 10

La fonction de gestion des ressources est un composant de l'environnement de conteneurs Solaris. Cette fonction permet de contrôler la façon dont les applications utilisent les ressources système disponibles. Vous pouvez :

Ce chapitre se compose des sections suivantes :

Présentation de la gestion des ressources

Les environnements informatiques modernes se doivent de répondre avec un maximum de souplesse aux charges de travail variables qui résultent des différentes applications sur un système. Une charge de travail correspond à la somme de tous les processus mis en jeu par une application ou un groupe d'applications. En l'absence de fonctionnalités de gestion des ressources, le système d'exploitation Solaris répond aux charges de travail en adaptant de façon dynamique son activité aux nouvelles requêtes des applications. Ce comportement par défaut implique généralement un accès équitable aux ressources pour toutes les activités du système. Les fonctions de gestion des ressources Solaris permettent d'apporter une réponse personnelle à chaque charge de travail. Vous pouvez :

La gestion des ressourcesest l'ensemble des moyens permettant d'optimiser les performances des charges de travail et de contrôler la façon dont les ressources sont exploitées. Elle est mise en œuvre par le biais de divers algorithmes. Ces algorithmes traitent les séries de requêtes de capacité envoyées par une application au cours de son exécution.

Les utilitaires de gestion des ressources permettent d'influer sur le comportement par défaut du système d'exploitation en matière de charges de travail. Le terme comportement représente l'ensemble des décisions prises par les algorithmes du système d'exploitation pour faire face aux demandes de ressources émanant d'une application. Les utilitaires de gestion des ressources permettent de :

La mise en œuvre d'une configuration système fonctionnant sur le principe de gestion des ressources offre plusieurs avantages. Vous pouvez :

Pour planifier une configuration de ce type, il est nécessaire de prendre en compte plusieurs facteurs clés :

Après avoir identifié les charges de travail qui coopèrent et celles qui sont en conflit, vous pouvez créer une configuration des ressources qui présente le meilleur compromis entre les objectifs de service de l'entreprise et les limites de capacité du système.

Dans la pratique, la gestion des ressources du système Solaris est fondée sur des mécanismes de contrôle, des mécanismes de notification et des mécanismes de surveillance. Il a fallu, dans la plupart des cas, apporter des améliorations aux mécanismes existants, notamment au système de fichiers proc(4), aux jeux de processeurs et aux classes de programmation. Dans les autres cas, les mécanismes sont propres à la gestion des ressources. Vous trouverez une description détaillée à ce sujet dans les chapitres suivants.

Classifications des ressources

Ce terme désigne un aspect du système informatique pouvant être manipulé afin de modifier le comportement d'une application. Autrement dit, une ressource est une capacité demandée de façon implicite ou explicite par une application. Si la capacité est refusée ou fait l'objet d'une restriction, l'exécution d'une application robuste prendra plus de temps.

La classification des ressources, à l'inverse de l'identification des ressources, peut obéir à certaines règles : implicites ou explicites, dépendantes ou non du facteur temps (temps d'utilisation de la CPU par opposition aux parts de CPU allouées), etc.

En règle générale, la gestion des ressources basée sur l'ordonnanceur s'applique aux ressources que l'application peut demander de façon implicite. Pour continuer à fonctionner, par exemple, une application envoie une requête implicite afin de bénéficier de temps de CPU supplémentaire. Pour écrire les données dans un socket de réseau, une application demande de façon implicite une bande passante. Les contraintes peuvent s'appliquer à l'utilisation totale cumulée d'une ressource demandée de façon implicite.

Des interfaces supplémentaires peuvent être présentées pour permettre une négociation explicite de la bande passante ou des niveaux de service de la CPU. Les ressources faisant l'objet d'une requête explicite (demande de thread supplémentaire, par exemple), peuvent être gérées au moyen de contraintes.

Mécanismes de contrôle de la gestion des ressources

Les mécanismes de contrainte, de programmation et de partitionnement sont les trois types de mécanisme de contrôle disponibles dans le système d'exploitation Solaris.

Mécanismes de contrainte

Les contraintes permettent à l'administrateur ou au développeur d'application de fixer des limites de consommation de ressources spécifiques pour une charge de travail. Lorsque les limites sont connues, la modélisation des scénarios de consommation de ressources est d'autant plus facile. Les limites peuvent également servir à identifier les applications au comportement anormal qui risqueraient de compromettre les performances ou la disponibilité du système par des demandes de ressources non régulées.

Les contraintes représentent des complications pour l'application. Il est possible de changer la relation entre l'application et le système jusqu'au point où l'application ne fonctionne plus. Pour éviter de prendre un risque trop important, le mieux est de réduire progressivement les contraintes qui pèsent sur les applications dont le comportement en matière d'utilisation des ressources est incertain. La fonctionnalité de contrôle des ressources dont il est question au Chapitre 6Contrôles des ressources (présentation) offre un mécanisme de contrainte. Il est possible de tenir compte de ces contraintes lors du développement de nouvelles applications, mais ce n'est pas nécessairement la préoccupation principale de tous les développeurs.

Mécanismes de programmation

Le terme programmation désigne la série de choix effectués à intervalles spécifiques en terme d'allocation des ressources. Les décisions sont basées sur un algorithme prévisible. Une application n'ayant pas besoin de son allocation actuelle laisse les ressources à la disposition d'une autre application. Une gestion programmée des ressources permet de faire le meilleur usage possible d'une configuration sous-utilisée, tout en permettant des allocations contrôlées dans un scénario exigeant un engagement important ou surévalué. L'algorithme sous-jacent définit le mode d'interprétation du terme « contrôlé ». Dans certains cas, l'algorithme de programmation peut garantir que toutes les applications ont accès à la ressource. L'ordonnanceur FSS décrit au Chapitre 8Ordonnanceur FSS (présentation) gère de cette manière l'accès des applications aux ressources de la CPU.

Mécanismes de partitionnement

Le partitionnement sert à lier une charge de travail à un sous-ensemble des ressources disponibles du système. Cette liaison vous assure qu'une quantité de ressources connue est toujours réservée à la charge de travail. La fonction de pool de ressources décrite au Chapitre 12Pools de ressources (présentation) permet justement de restreindre les charges de travail à des sous-ensembles spécifiques de la machine.

Les configurations tirant parti du partitionnement peuvent éviter un surengagement à l'échelle du système. Vous risquez toutefois de ne plus atteindre les seuils optimaux d'utilisations. Il faut savoir qu'un groupe réservé de ressources, comme des processeurs, n'est pas exploitable par une autre charge de travail lorsque la charge de travail à laquelle elles sont liées est inactive.

Configuration de la gestion des ressources

Il est possible d'intégrer des parties de la configuration de la gestion des ressources dans un service de noms du réseau. L'administrateur sera ainsi capable d'appliquer les contraintes de gestion des ressources à un ensemble de machines, et non pas sur une base individuelle. Les opérations correspondantes peuvent partager le même identificateur et l'utilisation cumulée des ressources peut être ventilée à partir des données de comptabilisation.

La configuration de la gestion des ressources et les identificateurs orientés charges de travail sont traités en détail dans le Chapitre 2Projets et tâches (présentation). L'utilitaire de comptabilisation étendue chargé de lier ces identificateurs à l'utilisation des ressources par l'application est décrit dans le Chapitre 4Comptabilisation étendue (présentation).

Interaction avec Solaris Zones

Il est possible d'utiliser les fonctions de gestion des ressources en combinaison avec Solaris Zones afin de peaufiner l'environnement applicatif. Les interactions entre ces fonctions et les zones sont décrites dans les sections correspondantes de ce manuel.

Intérêt de la gestion des ressources

La gestion des ressources permet de s'assurer que les temps de réponse sont satisfaisants pour vos applications.

C'est également un moyen d'optimiser l'utilisation des ressources. En définissant des catégories d'utilisation et en fixant les priorités appropriées, vous pouvez profiter au mieux de la capacité de réserve pendant les périodes creuses et éviter d'investir dans une puissance de traitement supplémentaire. C'est enfin la garantie pour vous qu'aucune ressource précieuse n'est gaspillée inutilement du fait de la variabilité des charges de travail.

Consolidation serveur

La gestion des ressources est idéale pour les environnements consolidant un certain nombre d'applications sur un serveur unique.

La gestion de nombreuses machines est relativement coûteuse et complexe. C'est la raison pour laquelle il est souvent préférable de consolider plusieurs applications sur des serveurs évolutifs de plus grande taille. Au lieu d'exécuter chaque charge de travail sur un système indépendant et d'autoriser un accès complet aux ressources de ce système, vous pouvez vous servir d'un logiciel de gestion des ressources pour séparer les charges de travail à l'intérieur du système. La gestion des ressources permet d'abaisser le coût total de possession en exécutant et en contrôlant des applications de diverses natures sur un même système Solaris.

Si vous offrez des services Internet et des services applicatifs, la gestion des ressources est un outil précieux pour :

Prise en charge d'une population importante et variée d'utilisateurs

Les fonctions de gestion des ressources sont particulièrement recommandées si votre système comporte une base d'utilisateurs importante et diversifiée, par exemple dans le cas d'un établissement d'enseignement. Si vous traitez des charges de travail de différentes natures, n'hésitez pas à configurer le logiciel pour accorder la priorité à certains projets par rapport aux autres.

Par exemple, dans les grandes maisons de courtage, les négociants ont occasionnellement besoin d'un accès rapide afin d'effectuer une interrogation ou un calcul. Les autres utilisateurs du système ont toutefois une charge de travail plus uniforme. Il est conseillé, dans ce cas, d'allouer une quantité de puissance de traitement proportionnellement plus importante aux projets des négociants pour répondre plus efficacement à leurs requêtes.

La gestion de ressources est également un outil idéal pour prendre en charge les systèmes à clients légers. Ces plates-formes offrent des consoles sans état avec des mémoires d'écran et des périphériques d'entrée tels que des cartes à puce. Le calcul est effectué depuis un serveur partagé, ce qui permet de profiter d'un environnement à partage de temps (TS, TimeSharing). Tirez parti des fonctions de gestion des ressources pour isoler les utilisateurs sur le serveur. Un utilisateur générant des charges de travail excessives ne pourra donc pas monopoliser les ressources matérielles au détriment des autres utilisateurs du système.

Configuration de la gestion des ressources (liste des tâches)

La liste des tâches suivante permet d'avoir une idée précise des étapes nécessaires à la mise en place de la gestion des ressources sur votre système.

Tâche 

Description 

Voir 

Identifer les charges de travail sur votre système et classer chacune d'elles par projet 

Créez des entrées de projet dans le fichier /etc/project, dans la carte NIS ou dans le service d'annuaire LDAP.

Section Base de données project

Définir les charges de travail prioritaires sur votre système 

Déterminez les applications jouant un rôle primordial. Il est possible que ces charges de travail exigent un accès préférentiel aux ressources. 

Se référer aux objectifs de service de l'entreprise 

Surveiller l'activité en temps réel sur votre système 

Servez-vous des outils d'évaluation des performances pour connaître la consommation actuelle en ressources des charges de travail s'exécutant sur votre système. Vous pouvez vérifier ensuite s'il est impératif ou non de restreindre l'acccès à une ressource donnée ou d'isoler des charges de travail particulières. 

Contrôle par système et pages de manuel cpustat(1M), iostat(1M), mpstat(1M), prstat(1M), sar(1) et vmstat(1M)

Modifier de façon temporaire les charges de travail s'exécutant sur votre système 

Pour déterminer les valeurs qu'il est possible de modifier, reportez-vous aux contrôles de ressources disponibles dans le système Solaris. Vous pouvez actualiser les valeurs à partir de la ligne de commande pendant l'exécution de la tâche ou du processus. 

Sections Contrôles de ressources disponibles, Actions globales et locales applicables aux valeurs de contrôle de ressource, Mise à jour temporaire des valeurs de contrôle de ressource sur un système en cours d'exécution et pages de manuel rctladm(1M) et prctl(1)

Définir les contrôles de ressources et les attributs de projet pour chaque entrée de projet dans la base de données project ou dans la base de données de projet de service d'attribution de noms

Chaque entrée de projet du fichier /etc/project ou de la base de données de projet de service d'attribution de noms peut contenir un ou plusieurs contrôles de ressources ou attributs. Les contrôles de ressources appliquent des restrictions aux tâches et processus rattachés à ce projet. Vous pouvez associer une ou plusieurs actions spécifiques à chaque valeur de seuil définie pour un contrôle de ressource. Les actions sont déclenchées dès que le seuil en question est atteint.

Il est possible d'instaurer les contrôles de ressources à partir de l'interface de ligne de commande. Certains paramètres de configuration peuvent également être définis au moyen de la console Solaris Management Console. 

Sections Base de données project, Format de fichier /etc/project local , Contrôles de ressources disponibles, Actions globales et locales applicables aux valeurs de contrôle de ressource et Chapitre 8Ordonnanceur FSS (présentation)

Prévoir une limite maximale d'utilisation de la mémoire physique par les ensembles de processus rattachés à un projet 

Le démon d'allocation restrictive impose la limite d'utilisation de la mémoire physique fixée pour l'attribut rcap.max-rss du projet dans le fichier /etc/project.

Section Base de données project et Chapitre 10Contrôle de la mémoire physique à l'aide du démon d'allocation restrictive (présentation)

Créer des configurations de pools de ressources 

Les pools de ressources permettent de partitionner les ressources système, telles que les processeurs, et de conserver ces partitions d'un redémarrage à l'autre. Vous pouvez ajouter un attribut project.pool à chaque entrée dans le fichier /etc/project.

Section Base de données project et Chapitre 12Pools de ressources (présentation)

Faire de l'ordonnanceur FSS votre ordonnanceur système par défaut 

Assurez-vous que tous les processus utilisateur dans un système doté d'une seule CPU ou dans un jeu de processeurs appartiennent à la même classe de programmation. 

Section Contrôle de l'ordonnanceur FSS et page de manuel dispadmin(1M)

Activer l'utilitaire de comptabilisation étendue pour surveiller et enregistrer la consommation des ressources par tâche ou processus 

Servez-vous des données de comptabilisation étendue pour évaluer les contrôles de ressources actuels et planifier les besoins en matière de capacité pour les futures charges de travail. Vous pouvez faire le suivi de l'utilisation cumulée à l'échelle du système. Pour obtenir des statistiques complètes pour les charges de travail connexes s'étendant à plusieurs systèmes, il est possible de partager le nom du projet entre plusieurs machines. 

Section Activation de la comptabilisation étendue pour les processus, les tâches et les flux et page de manuel acctadm(1M)

(Facultatif) Continuer à modifier les valeurs à partir de la ligne de commande s'il est nécessaire d'effectuer des ajustements supplémentaires à votre configuration. Vous pouvez changer les valeurs pendant l'exécution de la tâche ou du processus. 

Les modifications apportées aux tâches existantes peuvent être appliquées de façon temporaire sans redémarrer le projet. Réglez les valeurs jusqu'à ce que vous soyez satisfait des performances. Actualisez ensuite les valeurs actuelles dans le fichier /etc/project ou dans la base de données de projet de service d'attribution de noms.

Section Mise à jour temporaire des valeurs de contrôle de ressource sur un système en cours d'exécution et pages de manuel rctladm(1M) et prctl(1)

(Facultatif) Capturer les données de comptabilisation étendue 

Écrivez les enregistrements de comptabilisation étendue correspondant aux processus actifs et aux tâches actives. Les fichiers générés vous seront très utiles pour procéder aux opérations de planification, d'imputation et de facturation. Il existe une interface Perl (Practical Extraction and Report Language) prévue spécialement pour l'API libexacct qui permet de développer des scripts de génération de rapports et d'extraction personnalisés.

Page de manuel wracct(1M) et section Interface Perl pour libexacct