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

Chapitre 6 Contrôles des ressources (présentation)

Après avoir déterminé la façon dont les ressources sont utilisées par les charges de travail sur votre système, tel que décrit au Chapitre 4Comptabilisation étendue (présentation), il est important de fixer des limites pour éviter une surexploitation des ressources. L'utilitaire de contrôle des ressources permet justement de mettre en place un mécanisme de contraintes.

Ce chapitre se compose des sections suivantes :

Pour plus d'informations sur le mode d'administration des contrôles de ressources, reportez-vous au Chapitre 7Administration des contrôles des ressources (tâches).

Nouveautés dans les contrôles de ressources pour Solaris 10

Le jeu de contrôles de ressources suivant remplace les paramètres réglables de communication interprocessus (IPC) System V /etc/system :

Les contrôles de ressources de port d'événement suivants ont été ajoutés :

Le contrôle de ressource cryptographique suivant a été ajouté :

Les contrôles de ressources supplémentaires suivants ont été ajoutés :

Pour plus d'informations, reportez-vous à la section Contrôles de ressources disponibles.

Vous trouverez une liste complète des nouvelles fonctionnalités de Solaris 10 et la description des différentes versions de Solaris dans le guide Nouveautés apportées à Oracle Solaris 10 9/10.

Concepts de base sur les contrôles de ressources

Dans le système d'exploitation Solaris, le concept de limitation de ressources par processus a été étendu aux entités tâche et projet décrites au Chapitre 2Projets et tâches (présentation). Ces améliorations sont liées à l'utilitaire de contrôle des ressources (rctls). De plus, les allocations définies par le biais des paramètres réglables /etc/system sont désormais automatiques ou configurées également via le mécanisme de contrôle des ressources.

Un contrôle de ressource est identifié par le préfixe zone, project, task ou process. Les contrôles de ressources peuvent être observés à l'échelle d'un système. Il est possible de mettre à jour les valeurs des contrôles de ressources sur un système en cours d'exécution.

Pour afficher la liste des contrôles de ressources standard disponibles dans cette version, reportez-vous à la section Contrôles de ressources disponibles. Pour plus d'informations sur les contrôles de ressources disponibles à l'échelle d'une zone, reportez-vous à la section Propriétés des types de ressources.

Pour connaître les contrôles de ressources standard disponibles dans cette version, reportez-vous à la section Contrôles de ressources disponibles.

Limites d'utilisation des ressources et contrôles de ressources

Les systèmes UNIX proposent, par tradition, un utilitaire de limitation des ressources (rlimit). L'utilitaire rlimit permet aux administrateurs de prévoir une ou plusieurs limites numériques quant à l'utilisation des ressources mises à la disposition d'un processus. Ces limites concernent aussi bien le temps CPU par processus que la taille du fichier Core par processus et la taille du tas maximum par processus. La taille du tas correspond à la quantité de mémoire de travail allouée au segment de données du processus.

L'utilitaire de contrôle des ressources fournit des interfaces de compatibilité à l'utilitaire de limitation des ressources. Les applications existantes auxquelles des contraintes d'utilisation des ressources ont déjà été appliquées continuent de fonctionner normalement. Ces applications peuvent être observées de la même manière que les applications modifiées dans le but de tirer parti de l'utilitaire de contrôle des ressources.

Communication interprocessus et contrôles de ressources

Les processus peuvent communiquer entre eux en utilisant l'un des différents types de communication interprocessus (IPC). Le protocole de communication interprocessus (IPC) assure le transfert ou la synchronisation des informations entre les processus. Avant la version Solaris 10, les paramètres réglables IPC étaient définis en ajoutant une entrée au fichier /etc/system. L'utilitaire de contrôle des ressources propose désormais des contrôles de ressources qui régissent le comportement des utilitaires IPC du noyau. Ces contrôles de ressources remplacent les paramètres réglables /etc/system.

Des paramètres obsolètes peuvent être inclus dans le fichier /etc/system sur ce système Solaris. Dans ce cas, ces paramètres sont utilisés pour initialiser les valeurs par défaut de contrôle de ressource comme dans les versions précédentes de Solaris. Toutefois, l'utilisation des paramètres obsolètes est déconseillée.

Pour identifier les objets IPC qui participent au projet, exécutez la commande ipcs avec l'option -J. Pour obtenir un exemple, reportez-vous à la section Mode d'utilisation d'ipcs Pour plus d'informations au sujet de la commande ipcs, voir la page de manuel ipcs(1).

Pour plus d'informations sur le réglage du système Solaris, reportez-vous au Oracle Solaris Tunable Parameters Reference Manual.

Mécanismes de contrainte par contrôle des ressources

Les contrôles de ressources offrent un mécanisme de contrainte des ressources système. Vous pouvez empêcher les processus, les tâches, les projets et les zones d'utiliser une quantité donnée des ressources système spécifiées. Ce mécanisme permet de gérer plus efficacement le système en empêchant une surexploitation des ressources.

Les mécanismes de contrainte peuvent servir à gérer les processus à planification de la capacité. La contrainte rencontrée peut fournir des indications sur les besoins en ressource de l'application sans refuser nécessairement la ressource à l'application.

Mécanismes d'attribut d'un projet

Les contrôles de ressources peuvent également faire office de simple mécanisme d'attribut pour les utilitaires de gestion des ressources. Par exemple, le nombre de parts de CPU mises à la disposition d'un projet dans la classe de programmation de l'ordonnanceur FSS est défini par le contrôle de ressource project.cpu-shares. Étant donné qu'un nombre fixe de parts est attribué au projet par le contrôle, les diverses actions qui entrent en jeu en cas de dépassement d'un contrôle ne sont pas applicables. Dans ce contexte, la valeur actuelle du contrôle project.cpu-shares est considérée comme un attribut pour le projet spécifié.

Un autre type d'attribut de projet est utilisé pour réglementer la façon dont les ensembles de processus associés à un projet utilisent la mémoire physique. Ces attributs sont reconnaissables à leur préfixe rcap : rcap.max-rss , par exemple. Comme pour un contrôle de ressource, ce type d'attribut est configuré dans la base de données project. Cependant, à la différence des contrôles de ressources qui sont synchronisés par le noyau, les limitations des ressources sont appliquées de façon asynchrone au niveau utilisateur par le démon d'allocation restrictive rcapd . Pour plus d'informations sur la commande rcapd, reportez-vous au Chapitre 10Contrôle de la mémoire physique à l'aide du démon d'allocation restrictive (présentation) et à la page de manuel rcapd (1M).

L'attribut project.pool sert à spécifier une liaison de pool pour un projet. Pour plus d'informations sur les pools de ressources, reportez-vous au Chapitre 12Pools de ressources (présentation).

Configuration des contrôles de ressources et des attributs

L'utilitaire de contrôle des ressources se configure via la base de données project . Reportez-vous au Chapitre 2Projets 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. À 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.


Contrôles de ressources disponibles

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é :

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

Nom de la commande 

Description 

Unité par défaut 

project.cpu-cap

Solaris 10 8/07 : limite absolue des ressources de la CPU pouvant être consommées par un projet. La valeur 100 représente 100 % d'une CPU pour le paramètre project.cpu-cap. La valeur 1,25 équivaut à 125 %, car 100 % correspond à une capacité de CPU complète sur le système.

Quantité (nombre de CPU) 

project.cpu-shares

Nombre de parts de CPU accordées à ce projet et susceptibles d'être utilisées par l'ordonnanceur FSS (voir la page de manuel FSS(7)).

Quantité (partages) 

project.max-crypto-memory

Quantité totale de mémoire du noyau utilisable par libpkcs11 pour l'accélération matérielle cryptographique. Les valeurs prévues pour les tampons du noyau et les structures liées à la session sont allouées conformément à ce contrôle de ressource.

Taille (octets) 

project.max-locked-memory

Quantité totale de mémoire physique verrouillée autorisée. 

Lorsque le contrôle priv_proc_lock_memory est appliqué à un utilisateur, pensez également à définir ce contrôle de ressource pour empêcher cet utilisateur de verrouiller toute la mémoire.

Solaris 10 8/07 : notez que dans cette version, ce contrôle de ressources a remplacé project.max-device-locked-memory, lequel a été supprimé.

Taille (octets) 

project.max-port-ids

Nombre maximum autorisé de ports pairs. 

Quantité (nombre de ports pairs)  

project.max-sem-ids

Nombre maximum d'ID de sémaphore autorisé pour ce projet. 

Quantité (ID de sémaphore) 

project.max-shm-ids

Nombre maximum d'ID de mémoire partagée autorisé pour ce projet. 

Quantité (ID de mémoire partagée) 

project.max-msg-ids

Nombre maximum d'ID de file d'attente des messages autorisé pour ce projet. 

Quantité (ID de file d'attente des messages) 

project.max-shm-memory

Quantité totale de mémoire partagée System V autorisée pour ce projet. 

Taille (octets) 

project.max-lwps

Nombre maximum de LWP accessibles simultanément par ce projet. 

Quantité (LWP) 

project.max-tasks

Nombre maximum de tâches autorisé dans ce projet. 

Quantité (nombre de tâches) 

project.max-contracts

Nombre maximum de contrats autorisé dans ce projet. 

Quantité (contrats) 

task.max-cpu-time

Temps CPU maximum disponible pour les processus de cette tâche. 

Temps (secondes) 

task.max-lwps

Nombre maximum de LWP accessibles simultanément par les processus de cette tâche. 

Quantité (LWP) 

process.max-cpu-time

Temps CPU maximum disponible pour ce processus. 

Temps (secondes) 

process.max-file-descriptor

Index de descripteur de fichier maximum disponible pour ce processus. 

Index (descripteur de fichier maximum) 

process.max-file-size

Décalage de fichier maximum accessible en écriture par ce processus. 

Taille (octets) 

process.max-core-size

Taille maximum d'un fichier Core créé par ce processus. 

Taille (octets) 

process.max-data-size

Mémoire du tas maximum disponible pour ce processus. 

Taille (octets) 

process.max-stack-size

Segment de mémoire du tas maximum disponible pour ce processus. 

Taille (octets) 

process.max-address-space

Quantité d'espace d'adressage maximum (résultant de la somme des tailles de segment), disponible pour ce processus. 

Taille (octets) 

process.max-port-events

Nombre maximum d'événements autorisé par port pair. 

Quantité (nombre d'événements)  

process.max-sem-nsems

Nombre maximum de sémaphores autorisé par jeu de sémaphores. 

Quantité (sémaphores par jeu) 

process.max-sem-ops

Nombre maximum d'opérations de sémaphore autorisé par appel semop (valeur copiée à partir du contrôle de ressource au moment semget()).

Quantité (nombre d'opérations) 

process.max-msg-qbytes

Nombre maximum d'octets de messages dans une file d'attente de messages (valeur copiée à partir du contrôle de ressource au moment msgget()).

Taille (octets) 

process.max-msg-messages

Nombre maximum de messages dans une file d'attente de messages (valeur copiée à partir du contrôle de ressource au moment msgget()).

Quantité (nombre de messages) 

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.

Contrôles des ressources à l'échelle d'une zone

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 Contrôles des ressources à l'échelle d'une zone

Nom de la commande 

Description 

Unité par défaut 

zone.cpu-cap

Solaris 10 5/08 : limite absolue des ressources de la CPU pouvant être consommées par une zone non globale. La valeur 100 représente 100 % d'une CPU pour le paramètre project.cpu-cap. La valeur 1,25 équivaut à 125 %, car 100 % correspond à une capacité de CPU complète sur le système.

Quantité (nombre de CPU) 

zone.cpu-shares

Nombre de partages CPU de l'ordonnanceur FSS pour cette zone. 

Quantité (partages) 

zone.max-locked-memory

Quantité totale de mémoire physique verrouillée accessible par une zone. 

Lorsque le contrôle priv_proc_lock_memory est appliqué à une zone, pensez également à définir ce contrôle de ressource pour empêcher cette zone de verrouiller toute la mémoire.

Taille (octets) 

zone.max-lwps

Nombre maximum de LWP accessibles simultanément par cette zone. 

Quantité (LWP) 

zone.max-msg-ids

Nombre maximum d'ID de file d'attente des messages autorisé pour cette zone. 

Quantité (ID de file d'attente des messages) 

zone.max-sem-ids

Nombre maximum d'ID de sémaphore autorisé pour cette zone. 

Quantité (ID de sémaphore) 

zone.max-shm-ids

Nombre maximum d'ID de mémoire partagée autorisé pour cette zone. 

Quantité (ID de mémoire partagée) 

zone.max-shm-memory

Quantité totale de mémoire partagée System V autorisée pour cette zone. 

Taille (octets) 

zone.max-swap

Quantité totale de swap utilisable par les mappages d'espace d'adressage des processus utilisateur et les montages tmpfs pour cette zone.

Taille (octets) 

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. Pour tirer parti des contrôles de ressources à l'échelle d'une zone dans les zones marquées lx, reportez-vous à la section Configuration, vérification et validation de la zone marquée lx.

Notez qu'il est possible d'appliquer à la zone globale un contrôle de ressource à l'échelle d'une zone. Pour obtenir des informations supplémentaires, reportez-vous au Chapitre 17Configuration des zones non globales (présentation) et à la section Utilisation de l'ordonnanceur FSS sur un système Solaris doté de zones.

Prise en charge des unités

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 :

Voici l'ensemble des indicateurs globaux disponibles :

Indicateur global 

Chaîne du type de contrôle de ressource 

Modificateur 

Échelle 

RCTL_GLOBAL_BYTES 

octets 

 

Ko 

210

 

Mo 

220

 

Go 

230

 

To 

240

 

Po 

250

 

EB 

260

RCTL_GLOBAL_SECONDS 

secondes 

 

Ks 

103

 

Ms 

106

 

Gs 

109

 

Ts 

1012

 

Ps 

1015

 

Es 

1018

RCTL_GLOBAL_COUNT 

nombre 

aucune 

 

103

 

106

 

109

 

1012

 

1015

 

1018

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.


Valeurs des contrôles de ressources et niveaux de privilège

Une valeur de seuil appliquée à un contrôle de ressource constitue le seuil de déclenchement d'actions locales ou de mise en œuvre d'actions globales telles que la consignation.

Chaque valeur de seuil d'un contrôle de ressource doit être associé à un niveau de privilège. Trois niveaux de privilège sont aurtorisés.

À 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é.

Actions globales et locales applicables aux valeurs de contrôle de ressource

Il existe deux catégories d'actions applicables aux valeurs de contrôle de ressource : globale et locale.

Actions globales applicables aux valeurs de contrôle de ressource

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 :

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 :

Par défaut, les violations de contrôle de ressource ne font pas l'objet d'une consignation globale. Dans la version Solaris 10 5/08, le niveau n/a a été ajouté pour les contrôles de ressources sur lesquels aucune action globale ne peut être configurée.

Actions locales applicables aux valeurs de contrôle de ressource

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 :

none

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é.

deny

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).

signal=

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

Signal 

Description 

Remarques 

SIGABRT 

Met fin au processus. 

 

SIGHUP 

Envoie un signal de déconnexion. Cela se produit en cas d'abandon de la porteuse sur une ligne. Le signal est transmis au groupe de processus qui contrôle le terminal. 

 

SIGTERM 

Met fin au processus. Signal d'interruption envoyé par le logiciel. 

 

SIGKILL 

Met fin au processus et interrompt le programme. 

 

SIGSTOP 

Arrête le processus. Signal de contrôle du travail. 

 

SIGXRES 

Signal envoyé en cas de dépassement de la limite de contrôle de ressource. Généré par l'utilitaire de contrôle des ressources. 

 

SIGXFSZ 

Met fin au processus. Signal envoyé en cas de dépassement de la limite de taille de fichier. 

Concerne uniquement les contrôles de ressources possédant la propriété RCTL_GLOBAL_FILE_SIZE (process.max-file-size). Pour plus d'informations, voir la page de manuel rctlblk_set_value(3C).

SIGXCPU 

Met fin au processus. Signal envoyé en cas de dépassement de la limite du temps CPU. 

Concerne uniquement les contrôles de ressources possédant la propriété RCTL_GLOBAL_CPUTIME (process.max-cpu-time). Pour plus d'informations, voir la page de manuel rctlblk_set_value(3C).

Indicateurs et propriétés 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 atteint, 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.

lowerable

Il n'est pas utile de posséder des privilèges de superutilisateur pour abaisser les valeurs privilégiées pour ce contrôle.

no-deny

Même en cas de dépassement des valeurs de seuil, l'accès à la ressource n'est jamais refusé.

cpu-time

Le signal SIGXCPU peut être envoyé lorsque les valeurs de seuil de cette ressource sont atteintes.

seconds

Valeur temporelle pour le contrôle de ressource.

no-basic

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.

no-signal

Il est impossible de définir une action locale de signal pour les valeurs de contrôle de ressource.

no-syslog

L'action globale de message syslog ne peut pas être définie pour ce contrôle de ressource.

deny

Les requêtes de ressources sont refusées dès que les valeurs de seuil sont atteintes.

count

Valeur numérique (entier) pour le contrôle de ressource.

bytes

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.

Mise en œuvre des contrôles de ressources

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 œuvre 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

Cette illustration montre la façon dont chaque contrôle de ressource est mis en œuvre à son niveau d'imbrication.

Contrôle global des événements de contrôle de ressource

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 7Administration des contrôles des ressources (tâches) et à la page de manuel rctladm(1M).

Application des contrôles de ressources

Chaque contrôle de ressource répertorié dans le Tableau 6–1 peut être assigné à un projet au moment de la connexion ou lors de l'appel de la commande newtask, su ou des autres lanceurs at, batch ou cron. Chaque commande démarrée est exécutée dans une tâche distincte avec le projet par défaut de l'utilisateur à l'origine de l'appel. Pour plus d'informations, reportez-vous aux pages de manuel login(1), newtask(1), at(1), cron(1M) et su(1M).

Les mises à jour des entrées dans la base de données project, apportées au fichier /etc/project ou à une représentation de la base de données dans un service d'attribution de noms du réseau, ne sont pas appliquées aux projets actuellement actifs. Elles le sont dès lors qu'une nouvelle tâche rejoint le projet via une connexion ou la commande newtask.

Mise à jour temporaire des valeurs de contrôle de ressource sur un système en cours d'exécution

Les valeurs modifiées dans la base de données project prennent effet uniquement pour les nouvelles tâches démarrées dans un projet. Vous pouvez, cependant, vous servir des commandes rctladm et prctl pour actualiser les contrôles de ressources sur un système en cours d'exécution.

Mise à jour de l'état de la consignation

La commande rctladm a une incidence sur l'état de consignation global de chaque contrôle de ressource à l'échelle d'un système. Elle est pratique pour afficher l'état global et configurer le niveau de consignation de syslog en cas de dépassement des contrôles.

Mise à jour des contrôles de ressources

Il est possible d'afficher et de modifier temporairement les valeurs des contrôles de ressources et les actions par processus, par tâche ou par projet en utilisant la commande prctl. La commande, basée sur l'entrée fournie par un ID de projet, de tâche ou de processus, s'applique au contrôle de ressource au niveau où le contrôle a été défini.

Les modifications apportées aux valeurs et aux actions prennent effet immédiatement. Cependant, ces modifications s'appliquent uniquement au processus, à la tâche ou au projet en cours. Elles ne sont pas consignées dans la base de données project. Elles sont donc automatiquement perdues au redémarrage du système. Pour qu'ils aient un caractère permanent, les changements des contrôles de ressources doivent être enregistrés dans la base de données project.

Tous les paramètres des contrôles de ressource susceptibles d'être changés dans la base de données project peuvent également être modifiés avec la commande prctl. Il est possible d'ajouter ou de supprimer aussi bien les valeurs de base que les valeurs privilégiées. Leurs actions peuvent aussi être modifiées. Par défaut, le type de base s'applique à toutes les opérations définies, mais les processus et les utilisateurs dotés des privilèges de superutilisateur sont également à même de modifier les contrôles de ressources privilégiés. Il est impossible de changer, en revanche, les contrôles de ressources système.

Commandes utilisées avec les contrôles de ressources

Les commandes s'appliquant aux contrôles de ressources sont présentées dans le tableau suivant.

Aide-mémoire des commandes 

Description 

ipcs(1)

Permet d'identifier les objets IPC contribuant à l'utilisation d'un projet. 

prctl(1)

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. 

rctladm(1M)

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 page de manuel resource_controls(5) décrit les contrôles de ressources disponibles par l'intermédiaire de la base de données project, y compris les unités et les facteurs d'échelle.