Ignorer les liens de navigation | |
Quitter l'aperu | |
Administration Oracle Solaris : Oracle Solaris Zones, Oracle Solaris 10 Zones et gestion des ressources Oracle Solaris 11 Information Library (Français) |
Partie I Gestion des ressources Oracle Solaris
1. Introduction à la gestion des ressources
2. Projets et tâches (présentation)
3. Administration des projets et des tâches
4. Comptabilisation étendue (présentation)
5. Administration de la comptabilisation étendue (tâches)
6. Contrôles des ressources (présentation)
Concepts de base sur les contrôles de ressources
Limites d'utilisation des ressources et contrôles de ressources
Communication interprocessus et contrôles de ressources
Mécanismes de contrainte par contrôle des ressources
Mécanismes d'attribut d'un projet
Configuration des contrôles de ressources et des attributs
Contrôles de ressources disponibles
Contrôles des ressources à l'échelle d'une zone
Valeurs des contrôles de ressources et niveaux de privilège
Actions globales et locales applicables aux valeurs de contrôle de ressource
Actions globales applicables aux valeurs de contrôle de ressource
Actions locales applicables aux valeurs de contrôle de ressource
Indicateurs et propriétés des contrôles de ressources
Application des contrôles de ressources
Mise à jour temporaire des valeurs de contrôle de ressource sur un système en cours d'exécution
Mise à jour de l'état de la consignation
Mise à jour des contrôles de ressources
Commandes utilisées avec les contrôles de ressources
7. Administration des contrôles des ressources (tâches)
8. Ordonnanceur FSS (présentation)
9. Administration de l'ordonnanceur FSS (tâches)
10. Contrôle de la mémoire physique à l'aide du démon de limitation des ressources (présentation)
11. Administration du démon de limitation des ressources (tâches)
12. Pools de ressources (présentation)
13. Création et administration des pools de ressources (tâches)
14. Exemple de configuration de la gestion des ressources
Partie II Oracle Solaris Zones
15. Introduction à Oracle Solaris Zones
16. Configuration des zones non globales (présentation)
17. Planification et configuration de zones non globales (tâches)
20. Connexion à une zone non globale (présentation)
21. Connexion à une zone non globale (tâches)
22. A propos des migrations de zones et de l'outil zonep2vchk
23. Migration de systèmes Oracle Solaris et migration de zones non globales (tâches)
25. Administration d'Oracle Solaris Zones (présentation)
26. Administration d'Oracle Solaris Zones (tâches)
27. Configuration et administration de zones immuables
28. Dépannage des problèmes liés à Oracle Solaris Zones
Partie III Oracle Solaris 10 Zones
29. Introduction à Oracle Solaris 10 Zones
30. Evaluation d'un système Oracle Solaris 10 et création d'une archive
32. Configuration de la zone marquée solaris10
33. Installation de la zone marquée solaris10
34. Initialisation d'une zone, connexion et migration de zone
L'utilitaire des contrôles de ressources est configuré par le biais de la base de données project. Reportez-vous au Chapitre 2, Projets et tâches (présentation). Les contrôles de ressources et les autres attributs sont définis dans le dernier champ de l'entrée de la base de données project. Les valeurs associées à chaque contrôle de ressource sont mises entre parenthèses et affichées sous forme de texte simple séparé par des virgules. Les valeurs entre parenthèses représentent une clause d'action. Chaque clause d'action est définie par un niveau de privilège, une valeur de seuil et une action associée au seuil en question. A chaque contrôle de ressource peuvent correspondre plusieurs clauses d'action (séparées également par des virgules). L'entrée suivante fixe une valeur limite de processus léger par tâche et le temps CPU maximum par processus au niveau d'une entité de projet. Dans cette configuration, le contrôle process.max-cpu-time se chargerait d'envoyer un signal SIGTERM au processus au bout d'une heure d'exécution et un signal SIGKILL si le processus avait continué à fonctionner pendant une durée totale de 1 heure et 1 minute. Voir le Tableau 6-3.
development:101:Developers:::task.max-lwps=(privileged,10,deny); process.max-cpu-time=(basic,3600,signal=TERM),(priv,3660,signal=KILL) typed as one line
Remarque - Sur les systèmes dont les zones sont activées, les contrôles de ressources à l'échelle des zones sont spécifiés dans la configuration de zone sous un format légèrement différent. Pour plus d'informations, reportez-vous à la section Données de configuration de zones.
La commande rctladm permet de procéder à des interrogations d'exécution et à des modifications de l'utilitaire de contrôle des ressources, en fonction d'un champ d'application global. La commande prctl permet de procéder à des interrogations d'exécution et à des modifications de l'utilitaire de contrôle des ressources, en fonction d'un champ d'application local.
Pour plus d'informations, reportez-vous à la section Actions globales et locales applicables aux valeurs de contrôle de ressource et aux pages de manuel rctladm(1M) et prctl(1).
Remarque - Sur un système sur lequel des zones sont installées, il n'est pas possible d'appliquer la commande rctladm à une zone non globale pour modifier des paramètres. Vous pouvez vous servir de la commande rctladm dans une zone non globale pour afficher l'état de consignation globale de chaque contrôle de ressource.
Le tableau suivant présente la liste des contrôles de ressources standard disponibles dans cette version.
Il décrit la ressource à laquelle chaque contrôle s'applique. Il identifie également les unités par défaut utilisées par la base de données project pour cette ressource. On distingue deux types d'unité :
Les quantités représentent une valeur limite.
Les index représentent l'identificateur maximum valide.
project.cpu-shares indique, par exemple, le nombre de parts auquel le projet a droit. process.max-file-descriptor spécifie le numéro de fichier le plus élevé attribuable à un processus par l'appel système open(2).
Tableau 6-1 Contrôles de ressources standard de projet, de tâche et de processus
|
Vous pouvez afficher les valeurs par défaut des contrôles de ressources sur un système pour lequel aucun contrôle de ressource n'a été défini ou modifié. Un tel système contient les entrées autres que celles par défaut dans le fichier /etc/system ou dans la base de données project . Pour afficher les valeurs, servez-vous de la commande prctl.
L'intérêt de ces contrôles est de limiter l'utilisation des ressources totales pour l'ensemble des entités processus à l'intérieur d'une zone. Ils peuvent également être configurés en utilisant des noms de propriétés globales comme cela est décrit dans les sections Paramétrage des contrôles de ressources à l'échelle d'une zone et Configuration d'une zone.
Tableau 6-2 Zones des contrôles de ressources
|
Pour plus d'informations sur la configuration des contrôles de ressources à l'échelle d'une zone, reportez-vous aux sections Propriétés des types de ressources et Configuration d'une zone.
Notez qu'il est possible d'appliquer à la zone globale un contrôle de ressource à l'échelle d'une zone. Pour plus d'informations, reportez-vous à la section Utilisation de l'ordonnanceur FSS sur un système Oracle Solaris doté de zones.
Les indicateurs globaux permettant d'identifier les types de contrôles de ressources sont définis pour l'ensemble des contrôles de ressources. Le système utilise ces indicateurs pour communiquer des informations de type de base aux applications telles que la commande prctl. Les applications se servent de ces informations pour déterminer :
Les chaînes d'unité qui conviennent à chaque contrôle de ressource
L'échelle à utiliser lors de l'interprétation des valeurs d'échelle
Voici l'ensemble des indicateurs globaux disponibles :
|
Les valeurs d'échelle peuvent être employées avec des contrôles de ressources. L'exemple suivant illustre une valeur de seuil à l'échelle :
task.max-lwps=(priv,1K,deny)
Remarque - Les modificateurs d'unité sont acceptés par les commandes prctl, projadd et projmod. Vous ne pouvez pas utiliser des modificateurs d'unité dans la base de données project elle-même.
Une valeur de seuil appliquée à un contrôle de ressource constitue le seuil de déclenchement d'actions locales ou de mise en oeuvre d'actions globales telles que la consignation.
Chaque valeur de seuil d'un contrôle de ressource doit être associée à un niveau de privilège. Trois niveaux de privilège sont autorisés.
De base (niveau modifiable par le propriétaire du processus d'appel)
Privilégié (niveau modifiable uniquement par des appelants privilégiés ou root)
Système (niveau fixé pour toute la durée de l'instance du système d'exploitation)
A chaque contrôle de ressource correspond une seule et même valeur système définie par le système ou par le fournisseur de ressource. La valeur système représente la quantité de ressource susceptible d'être fournie par l'implémentation actuelle du système d'exploitation.
Il est possible de définir un nombre quelconque de valeurs privilégiées, mais une seule valeur de base est autorisée. Un privilège de base par défaut est assigné aux opérations pour lesquelles aucune valeur privilégiée n'a été prévue.
Le niveau de privilège pour une valeur de contrôle de ressource est défini dans le champ correspondant du bloc de contrôle de ressource sous la forme RCTL_BASIC, RCTL_PRIVILEGED ou RCTL_SYSTEM. Pour plus d'informations, voir setrctl(2) Vous pouvez faire appel à la commande prctl pour modifier les valeurs associées au niveau de base et au niveau privilégié.
Il existe deux catégories d'actions applicables aux valeurs de contrôle de ressource : globale et locale.
Les actions globales s'appliquent aux valeurs de chaque contrôle de ressource du système. Vous pouvez également faire appel à la commande ctladm décrite dans la page de manuel rctladm(1M) pour réaliser les actions suivantes :
Afficher l'état global des contrôles de ressources système actifs
Définir les actions de consignation globales
Vous avez la possibilité d'activer ou de désactiver l'action de consignation globale pour les contrôles de ressources. Vous pouvez configurer l'action syslog jusqu'à un degré spécifique en assignant un niveau de gravité, syslog=niveau. Voici les différents paramètres sélectionnables pour le niveau :
debug
info
notice
warning
err
crit
alert
emerg
Par défaut, les violations de contrôle de ressource ne font pas l'objet d'une consignation globale. Le niveau n/a indique les contrôles de ressources sur lesquels aucune action globale ne peut être configurée.
Les actions locales s'exercent dans le cadre d'un processus qui essaie de dépasser la valeur de contrôle. Il est possible d'associer une ou plusieurs actions à chaque valeur de seuil appliquée à un contrôle de ressource. Il existe trois types d'action locale : none, deny et signal=. Ces trois actions sont utilisées dans les conditions suivantes :
Les demandes de ressources d'une quantité supérieure au seuil fixé ne sont suivies d'aucune action. Cela est pratique pour contrôler l'utilisation des ressources sans perturber le déroulement des applications en cours. Vous pouvez également prévoir l'affichage d'un message global en cas de dépassement du contrôle de ressource, même si cela n'a aucune incidence sur le processus concerné.
Les demandes de ressources d'une quantité supérieure au seuil fixé sont refusées. Ainsi, un contrôle de ressource task.max-lwps pour lequel vous avez choisi l'action deny provoque l'échec de l'appel système fork si le nouveau processus dépasse la valeur de contrôle. Voir la page de manuel fork(2).
Vous pouvez demander l'émission d'un signal en cas de dépassement du contrôle de ressource. Le signal est alors transmis au processus. Aucun autre signal n'est envoyé si le processus utilise des ressources supplémentaires. Les signaux disponibles sont répertoriés dans le Tableau 6-3.
Ces actions ne sont pas toutes applicables à chaque contrôle de ressource. Un processus n'est pas en mesure, par exemple, de dépasser le nombre de parts de CPU allouées au projet dont il est membre. L'action deny n'est, par conséquent, pas applicable au contrôle de ressource project.cpu-shares.
En raison des restrictions liées à l'implémentation, les propriétés globales de chaque contrôle peuvent limiter le champ d'actions programmables pour la valeur de seuil. Voir la page de manuel rctladm(1M). Le tableau suivant récapitule les actions ayant pour effet d'émettre un signal. Pour plus d'informations au sujet des signaux, voir la page de manuel signal(3HEAD).
Tableau 6-3 Signaux disponibles pour les valeurs des contrôles de ressources
|
Chaque contrôle de ressource sur le système est associé à un jeu de propriétés bien précis. Ce jeu de propriétés correspond à un ensemble d'indicateurs lesquels sont associés à toutes les instances gérées de cette ressource. Vous ne pouvez pas modifier les indicateurs globaux, mais il est possible de récupérer les indicateurs à l'aide de l'appel système rctladm ou getrctl.
Les indicateurs locaux définissent le comportement et la configuration par défaut pour une valeur de seuil donnée du contrôle de ressource appliqué à un processus particulier ou à un ensemble de processus. Les indicateurs locaux prévus pour une valeur de seuil n'ont pas d'incidence sur le comportement des autres valeurs de seuil définies pour le même contrôle de ressource. En revanche, les indicateurs globaux changent le comportement de chacune des valeurs associées à un contrôle particulier. Il est possible de modifier les indicateurs locaux (en respectant les contraintes fournies par les indicateurs globaux correspondants) au moyen de la commande prctl ou de l'appel système setrctl. Voir la page de manuel setrctl(2).
Pour obtenir la liste complète des indicateurs locaux, des indicateurs globaux et de leurs définitions, voir la page de manuel rctlblk_set_value(3C).
Pour déterminer le comportement du système lorsqu'une valeur de seuil d'un contrôle de ressource est atteinte, exécutez la commande rctladm pour afficher les indicateurs globaux du contrôle de ressource qui vous intéresse. Pour afficher, par exemple, les valeurs de process.max-cpu-time, entrez l'instruction suivante :
$ rctladm process.max-cpu-time process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ]
Les indicateurs globaux ont la signification suivante.
Il n'est pas utile de posséder des privilèges de superutilisateur pour abaisser les valeurs privilégiées pour ce contrôle.
Même en cas de dépassement des valeurs de seuil, l'accès à la ressource n'est jamais refusé.
Le signal SIGXCPU peut être envoyé lorsque les valeurs de seuil de cette ressource sont atteintes.
Valeur temporelle pour le contrôle de ressource.
Il est impossible de définir une valeur de contrôle de ressource avec un privilège de type basic. Seules les valeurs de privilège élevé sont autorisées.
Il est impossible de définir une action locale de signal pour les valeurs de contrôle de ressource.
L'action globale de message syslog ne peut pas être définie pour ce contrôle de ressource.
Les demandes de ressources sont refusées dès lors que les valeurs de seuil sont atteintes.
Valeur numérique (entier) pour le contrôle de ressource.
Unité de taille pour le contrôle de ressource.
Servez-vous de la commande prctl pour afficher les valeurs et actions locales pour le contrôle de ressource.
$ prctl -n process.max-cpu-time $$ process 353939: -ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none
L'indicateur max (RCTL_LOCAL_MAXIMAL) est défini pour les deux valeurs de seuil et l'indicateur inf (RCTL_GLOBAL_INFINITE) s'applique à ce contrôle de ressource. Une valeur inf représente une quantité infinie. La valeur n'est jamais imposée. Telles qu'elles sont configurées, les deux quantités limites représentent des valeurs infinies qui ne sont jamais dépassées.
Il est possible d'appliquer plusieurs contrôles de ressources à une même ressource. Vous pouvez définir un contrôle de ressource à chaque niveau d'imbrication dans le modèle de processus. Si des contrôles de ressources sont appliqués à la même ressource à différents niveaux d'imbrication, c'est le contrôle du plus petit conteneur qui est mis en oeuvre en premier. Ainsi, l'action serait appliquée à process.max-cpu-time avant d'être appliquée à task.max-cpu-time si les deux contrôles sont découverts en même temps.
Figure 6-1 Collections de processus, relations entre conteneurs et jeux de contrôles de ressources correspondants
La quantité de ressources utilisée par les processus est bien souvent inconnue. Pour obtenir des informations supplémentaires, essayez d'utiliser les actions globales de contrôle de ressource auxquelles la commande rctladm donne accès. Exécutez la commande rctladm pour établir une action syslog sur un contrôle de ressource. Si une entité gérée par ce contrôle de ressource rencontre une valeur de seuil, un message système est consigné dans le journal au niveau de consignation configuré. Pour plus d'informations, reportez-vous au Chapitre 7, Administration des contrôles des ressources (tâches) et à la page de manuel rctladm(1M).