cette fonction n'est disponible que si vous utilisez Solaris Resource Manager 1.3 dans l'environnement d'exploitation Solaris 8 (Edition pour plate-forme SPARC).
L'allocation restrictive est un plafond imposé à la consommation d'une ressource (mémoire physique ou délai utilisé par l'UC) par un ensemble de processus.
Dans Solaris Resource Manager 1.3, l'application de l'allocation restrictive permet de réguler la consommation de ressources de mémoire physique grâce à un ensemble de processus reliés à un noeud limite ou à un projet. Pour de plus amples informations sur les projets, reportez-vous à la page de manuel project(4).
Une limite d'utilisation des ressources de mémoire physique peut être définie pour un noeud limite ou un projet (selon le mode utilisé) en ajoutant un attribut à ce noeud ou projet.
L'attribut de noeud limite utilisé pour assigner une limite RSS (taille résidente définie) est :
L'attribut rss.limit définit, dans des unités spécifiées, la limite d'utilisation de mémoire physique qui est appliquée à des ensembles de processus reliés à un noeud limite. Il doit s'agir d'un nombre positif.
rss.limit est défini à l'aide de la commande limadm (1MSRM). Ex. : pour définir une limite d'utilisation RSS de 10 giga-octets pour le noeud limite oracle, entrez :
# /usr/srm/sbin/limadm set rss.limit=10 Go oracle |
L'attribut de projet utilisé pour établir une limite d'utilisation RSS est :
L'attribut rcap.max-rss définit, en octets, la mémoire physique disponible pour les processus reliés à un projet. Il doit s'agir d'un nombre positif.
rcap.max-rss est configuré dans la base de données project(4). Ex. : la ligne ci-dessous de cette base de données définit une limite d'utilisation RSS pour un projet intitulé oracle.
oracle:100::oracle,root::rcap.max-rss=10737418240 |
Le démon d'application de l'allocation restrictive rcapd(1MSRM) et les utilitaires qui lui sont associés fournissent des mécanismes d'application et d'administration des limites d'utilisation. Une seule instance de rcapd peut être exécutée à la fois. Le démon vérifie périodiquement l'utilisation des ressources par les ensembles de processus pour lesquels des limites d'utilisation de la mémoire physique ont été définies. Si la consommation des processus excède cette limite et si d'autres conditions sont remplies, le démon prend des mesures visant à réduire la consommation cumulée des processus à un niveau inférieur à la limite d'utilisation.
Le système de mémoire virtuelle divise la mémoire physique en segments appelés pages. Pour lire des données d'un fichier et les mettre en mémoire, le système de mémoire virtuelle lit une page à la fois : il charge le fichier. Pour réduire la consommation des ressources, le démon peut renvoyer les pages peu utilisées vers une zone extérieure à la mémoire physique.
Utilisez rcapadm(1MSRM) pour configurer le démon de limite d'utilisation des ressources. La commande rcapadm permet aussi d'administrer les limites d'utilisation à un niveau global. Des changements de configuration peuvent être intégrés à rcapd sur demande en envoyant un signal SIGHUP (voir kill( 1)) ou par le biais de l'intervalle de configuration (voir rcapadm(1MSRM)). Vous devez posséder des privilèges de superutilisateur pour configurer le démon. Utilisée sans arguments, la commande rcapadm affiche l'état actuel du démon d'allocation restrictive s'il a été configuré.
Utilisez rcapstat(1SRM) pour élaborer un rapport statistique concernant le démon d'application des limites d'utilisation pour chaque limite définie.
Utilisez rcapadm( 1MSRM) pour configurer le démon d'allocation restrictive.
Deux modes de fonctionnement sont possibles : lnode et project.
Pour appliquer les limites d'utilisation définies pour les noeuds limites et ignorer celles définies pour les projets, entrez :
# rcapadm -m lnode |
Pour appliquer les limites d'utilisation définies pour les projets et ignorer celles définies pour les noeuds limites, entrez :
# rcapadm -m project |
Vous pouvez régler les intervalles de fonctionnement périodique de rcapd. Pour réinitialiser ces intervalles, utilisez l'option -i.
# rcapadm -i intervalle=valeur,...,intervalle=valeur |
La valeur de tous les intervalles est exprimée en secondes. Les intervalles et leurs valeurs par défaut sont décrits dans le tableau ci-dessous :
Intervalle |
Valeur par défaut (secondes) |
Description |
---|---|---|
scan |
15 |
Fréquence de recherche de nouveaux processus par rcapd. La valeur minimum est 1 seconde. |
sample |
5 |
Fréquence d'échantillonnage RSS des processus. La valeur minimum est 1 seconde. |
report |
5 |
Fréquence de mise à jour des statistiques de pagination par rcapd pour rcapstat. Si cette fréquence est définie sur 0, les statistiques ne sont pas mises à jour. |
config |
60 |
Fréquence de reconfiguration. Dans un événement de reconfiguration, rcapd vérifie s'il existe des mises à jour du fichier de configuration et recherche de nouvelles limites d'utilisation et de nouveaux ensembles dans les bases de données de limites des noeuds et de projets. |
Si l'intervalle spécifié pour rcapstat est inférieur à celui de rcapd (avec rcapadm (1MSRM)), la sortie peut être nulle pour certains intervalles. En effet, rcapd procède à la mise à jour des statistiques selon l'intervalle spécifié à l'aide de rcapadm et cet intervalle est indépendant de (et moins précis que) l'intervalle d'échantillonnage utilisé par rcapstat.
Les limites d'utilisation peuvent être configurées de manière à ne pas être appliquées tant que la mémoire physique disponible n'est pas faible. La valeur minimum (qui est aussi la valeur défaut) est 0, ce qui signifie que les limites d'utilisation sont toujours appliquées. Pour définir une autre valeur minimum d'application de la limitation d'utilisation de la mémoire physique, entrez :
# rcapadm -c pourcentage |
Le pourcentage doit être compris entre 0 et 100. L'utilisation actuelle globale de la mémoire physique et la limitation d'utilisation associée peuvent être obtenues à l'aide de l'option -g de la commande rcapstat. Consultez la rubrique Elaboration de rapports concernant les limites d'utilisation de la mémoire globale.
Pour activer le démon d'allocation restrictive et faire en sorte qu'il soit lancé immédiatement et lors de chaque initialisation du système, entrez :
# rcapadm -E |
Pour activer le démon d'allocation restrictive lors de l'initialisation sans affecter son état actuel, spécifiez également l'option -n :
# rcapadm -n -E |
Pour désactiver le démon d'allocation restrictive et faire en sorte qu'il s'arrête immédiatement et ne soit plus lancé lors de chaque initialisation du système, entrez :
# rcapadm -D |
Pour désactiver le démon d'allocation restrictive sans affecter son état actuel, spécifiez également l'option -n :
# rcapadm -n -D |
s'il est tué, le démon rcapd peut laisser des processus à l'état arrêté. Consultez la page de manuel kill(1). Utilisez rcapadm -D ou SIGTERM pour demander un arrêt conforme de rcapd.
Utilisez la commande rcapstat pour générer des rapports sur les noeuds limites ou projets affectés par rcapd. Vous pouvez définir l'intervalle d'échantillonnage et spécifier la fréquence de génération des rapports.
Spécifie la fréquence d'échantillonnage, en secondes. La valeur par défaut est 5 secondes.
Spécifie le nombre de fois que les statistiques sont répétées. Par défaut, rcapstat produit des statistiques jusqu'à ce qu'un signal de fin soit reçu ou que le processus rcapd se termine.
Les statistiques de pagination contenues dans le premier rapport produit par la commande rcapstat montrent l'activité depuis le démarrage du démon. Les rapports suivants reflètent l'activité depuis la génération du dernier rapport.
La liste ci-dessous définit les en-têtes de colonnes d'un rapport rcapstat :
Identificateur de noeud limite de l'ensemble de processus ou identificateur de projet des processus reliés à un projet.
Identificateur d'ensemble, qui peut prendre la valeur project ou lnode.
Nombre de processus dans l'ensemble.
Taille totale de mémoire virtuelle de l'ensemble de processus, y compris tous les fichiers et périphériques mappés, en kilo-octets (Ko), méga-octets (Mo) ou giga-octets (Go).
Taille résidente définie (RSS) de l'ensemble de processus, en kilo-octets (Ko), méga-octets (Mo) ou giga-octets (Go), sans compter les objets qui sont partagés.
Limitation d'utilisation RSS définie pour un projet ou un noeud limite. Pour découvrir comment spécifier des limitations d'utilisation de mémoire, consultez la page de manuel rcapd (1MSRM).
Mémoire que rcapd a tenté de renvoyer depuis le dernier échantillonnage rcapstat.
Quantité moyenne de mémoire que rcapd a tenté de renvoyer lors de chaque cycle d'échantillonnage survenu depuis le dernier échantillon rcapstat. La fréquence à laquelle rcapd échantillonne les tailles RSS des ensembles peut être définie à l'aide de rcapadm( 1MSRM).
Quantité totale de mémoire que rcapd a réussi à renvoyer depuis le dernier échantillonnage rcapstat. rcapd renvoie les pages les moins fréquemment utilisées.
Estimation de la quantité moyenne de mémoire que rcapd a réussi à renvoyer lors de chaque cycle d'échantillonnage survenu depuis le dernier échantillonnage rcapstat. La fréquence à laquelle rcapd échantilonne les tailles RSS des processus peut être définie à l'aide de rcapadm.
Les exemples contenus dans cette rubrique montrent comment utiliser rcapstat pour surveiller l'utilisation des ressources par les ensembles de processus pour lesquels des limites d'utilisation de la mémoire physique ont été définies.
Des limites d'utilisation sont définies pour deux noeuds limites associés à deux utilisateurs. La limite d'utilisation définie pour user1 est de 50 méga-octets et celle définie pour user2 est de 10 méga-octets.
La commande ci-dessous permet d'élaborer des rapports avec une fréquence d'échantillonnage de 5 secondes. Cinq rapports seront émis, un après chaque échantillonnage.
usermachine% rcapstat 5 5 id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 50M 50M 0K 3312K 0K 78194 user2 1 2368K 1856K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 50M 0K 0K 0K 0K 78194 user2 1 2368K 1856K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 50M 0K 0K 0K 0K 78194 user2 1 2368K 1928K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 50M 0K 0K 0K 0K 78194 user2 1 2368K 1928K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 50M 0K 0K 0K 0K 78194 user2 1 2368K 1928K 10M 0K 0K 0K 0K |
Les trois premières lignes de la sortie constituent le premier rapport, qui contient les informations relatives aux limites d'utilisation et aux noeuds pour les deux noeuds limites, et les statistiques de pagination depuis le démarrage de rcapd. Les colonnes at et pg contiennent une valeur supérieure à zéro pour user1 et nulle pour user2. Cela indique que user1 a dépassé sa limite d'utilisation à un moment donné de l'historique du démon, mais pas user2.
Les rapports suivants contiennent des statistiques de pagination depuis les intervalles précédents, mais ne montrent aucune activité significative.
La commande limadm(1MSRM) peut être utilisée pour abaisser la limite d'utilisation de mémoire d'un noeud limite, ce qui rend la limitation encore plus restrictive. rcapd applique la nouvelle limite d'utilisation à l'échéance du prochain intervalle de configuration (consultez la page de manuel rcapadm( 1MSRM)). Un signal peut également être envoyé pour provoquer une application immédiate de la nouvelle limite d'utilisation par rcapd.
admin# limadm set rss.limit=30M user1 admin# pkill -HUP rcapd |
La commande ci-dessous permet d'élaborer des rapports avec une fréquence d'échantillonnage de 5 secondes. Cinq rapports seront émis, un après chaque échantillonnage.
admin# rcapstat 5 5 id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 35M 30M 50M 0K 3312K 0K 78194 user2 1 2368K 1856K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 36M 30M 52M 52M 632K 632K 78194 user2 1 2368K 2096K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 33M 30M 57M 52M 816K 632K 78194 user2 1 2368K 1968K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 27M 30M 4792K 4792K 40K 40K 78194 user2 1 2368K 1144K 10M 0K 0K 0K 0K id lnode nproc vm rss cap at avgat pg avgpg 112270 user1 24 123M 27M 30M 0K 0K 0K 0K 78194 user2 1 2368K 1144K 10M 0K 0K 0K 0K |
Lorsque la limite d'utilisation a été abaissée à 30 méga-octets au lieu de 50, rcapd a répondu en tentant de renvoyer les 6 méga-octets de mémoire résidente excédentaires par rapport à la limite d'utilisation. Cet objectif a été atteint ; il n'était dépassé que de peu.
La commande ci-dessous permet d'élaborer des rapports avec une fréquence d'échantillonnage de 5 secondes. Cinq rapports seront émis, un après chaque échantillonnage.
user1machine% rcapstat 5 5 |
id project nproc vm rss cap at avgat pg avgpg 376565 user1 57 209M 46M 10M 440M 220M 5528K 2764K 376565 user1 57 209M 44M 10M 394M 131M 4912K 1637K 376565 user1 56 207M 43M 10M 440M 147M 6048K 2016K 376565 user1 56 207M 42M 10M 522M 174M 4368K 1456K 376565 user1 56 207M 44M 10M 482M 161M 3376K 1125K |
Dans cet exemple, le projet user1 a une taille RSS qui dépasse la limite d'utilisation de la mémoire physique. Les valeurs autres que zéro qui figurent dans la colonne pg indiquent que rcapd libère constamment de la mémoire pour tenter de respecter la limite en abaissant l'utilisation de la mémoire physique par les processus du projet. Comme le montrent les valeurs changeantes de rss, qui ne diminuent pas en conséquence, rcapd n'y parvient pas. Cela signifie que la mémoire résidente de l'application est activement utilisée, ce qui force rcapd à agir sur l'ensemble actif. Dans ces conditions, le système continue à enregistrer de forts taux de défaillance de pages et un trafic d'E/S correspondant, jusqu'à ce que l'ensemble actif soit réduit, que la limite soit abaissée ou que l'application change son schéma d'accès à la mémoire.
L'exemple ci-dessous est une suite de l'exemple précédent et utilise le même projet.
example% rcapstat 5 5 id project nproc vm rss cap at avgat pg avgpg 376565 user1 56 207M 44M 10M 381M 191M 15M 7924K 376565 user1 56 207M 46M 10M 479M 160M 2696K 898K 376565 user1 56 207M 46M 10M 424M 141M 7280K 2426K 376565 user1 56 207M 43M 10M 401M 201M 4808K 2404K 376565 user1 56 207M 43M 10M 456M 152M 4800K 1600K 376565 user1 56 207M 44M 10M 486M 162M 4064K 1354K 376565 user1 56 207M 52M 100M 191M 95M 1944K 972K 376565 user1 56 207M 55M 100M 0K 0K 0K 0K 376565 user1 56 207M 56M 100M 0K 0K 0K 0K 376565 user1 56 207M 56M 100M 0K 0K 0K 0K 376565 user1 56 207M 56M 100M 0K 0K 0K 0K 376565 user1 56 207M 56M 100M 0K 0K 0K 0K |
Il est possible de faire de l'ensemble résident l'ensemble actif du projet en empêchant l'application des limites d'utilisation, et cela soit en augmentant celle d'un projet, soit en changeant la valeur minimum de mise en application des limites d'utilisation (consultez la page de manuel rcapadm(1MSRM)). La colonne rss peut se stabiliser et afficher la taille de l'ensemble actif du projet, comme dans cet exemple. C'est la valeur minimum qui permet aux processus du projet de fonctionner sans connaître perpétuellement des erreurs de pagination.
Vous pouvez utiliser l'option -g de rcapstat pour élaborer un rapport concernant :
la limite d'utilisation de mémoire globale définie par rcapadm(1MSRM) ;
l'utilisation actuelle de la mémoire, sous la forme d'un pourcentage de la mémoire physique totale installée sur le système.
Pour de plus amples informations, consultez les pages de manuel rcapadm (1MSRM), rcapd(1MSRM), rcapstat(1SRM), limadm(1MSRM) et project(4).