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

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

Le démon d'allocation restrictive rcapd permet de réguler l'utilisation de la mémoire physique par les processus exécutés dans le cadre de projets faisant l'objet de limitation de ressources.

Solaris 10 8/07 : si vous utilisez des zones sur votre système, vous avez la possibilité d'exécuter la commande rcapd à partir de la zone globale dans le but de mieux gérer la mémoire physique réservée aux zones non globales. Voir le Chapitre 18Planification et configuration de zones non globales (tâches).

Ce chapitre comprend les sections suivantes :

Pour obtenir les instructions nécessaires à l'utilisation de la commande rcapd, reportez-vous au Chapitre 11Administration du démon d'allocation restrictive (tâches).

Nouveautés en matière de contrôle de la mémoire physique à l'aide du démon d'allocation restrictive

Solaris 10 : il est désormais possible d'exécuter la commande projmod pour définir l'attribut rcap.max-rss dans le fichier /etc/project.

Solaris 10 11/06 : des informations ont été ajoutées au sujet de l'activation et de la désactivation du démon d'allocation restrictive en tant que service dans l'utilitaire de gestion de service Solaris (SMF).

Pour obtenir une liste complète des nouvelles fonctionnalités de Solaris 10 et la description des différentes versions de Solaris, reportez vous au document Nouveautés apportées à Oracle Solaris 10 9/10.

Introduction au démon d'allocation restrictive

La limitation des ressources est le procédé consistant à fixer un seuil d'utilisation maximum des ressources (telles que la mémoire physique). Il est permis de prévoir des restrictions de mémoire physique par projet.

Le démon d'allocation restrictive des ressources et les utilitaires connexes offrent différents mécanismes pour mettre en œuvre et gérer les limites s'appliquant à la mémoire physique.

Comme pour le contrôle des ressources, la limitation des ressources peut être configurée en utilisant certains attributs des entrées de projet dans la base de données project. Mais à 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. Le mode asynchrone induit un léger décalage en raison de l'intervalle d'analyse du démon.

Pour plus d'informations au sujet de la commande rcapd, reportez-vous à la page de manuel rcapd(1M) Pour plus d'informations sur les projets et la base de données project, reportez-vous au Chapitre 2Projets et tâches (présentation) et à la page de manuel project(4). Pour plus d'informations au sujet des contrôles de ressources, reportez-vous au Chapitre 6Contrôles des ressources (présentation).

Principe de fonctionnement de la limitation des ressources

Le démon analyse à maintes reprises l'utilisation des ressources par les projets auxquels s'appliquent des allocations restrictives. C'est l'administrateur qui définit l'intervalle auquel le démon analyse ces informations. Pour plus d'informations, reportez-vous à la section Détermination des intervalles d'échantillonnage En cas de dépassement du seuil d'utilisation maximale de la mémoire physique du système et si d'autres conditions sont remplies, le démon prend les mesures nécessaires pour réduire les ressources utilisées par les projets concernés jusqu'au niveau (ou en dessous) des limites prévues.

Le système de mémoire virtuelle divise la mémoire physique en segments appelés pages. Les pages représentent l'unité de base de la mémoire physique dans le sous-système de gestion de la mémoire Solaris. Pour lire les données à partir d'un fichier en mémoire, le système de mémoire virtuelle charge chaque page du fichier à tour de rôle. Pour économiser les ressources, le démon a la possibilité de décharger de la mémoire les pages les moins souvent consultées ou de les transférer vers un périphérique de swap (c'est-à-dire vers une zone à l'extérieur de la mémoire physique).

Le démon gère la mémoire physique en adaptant la taille résidente définie de la charge de travail d'un projet à sa taille de travail. jeu de pages résidant en mémoire physique. La taille de travail correspond au jeu de pages utilisé de façon active par la charge de travail pendant son cycle de traitement. Elle varie au cours du temps, selon le mode opératoire du processus et le type de données en cours de traitement. Dans l'idéal, chaque charge de travail dispose d'une quantité suffisante de mémoire physique pour que sa taille de travail reste résidente. Cette dernière peut également tirer parti d'un espace de stockage sur disque secondaire prévu pour accueillir les pages qui ne tiennent pas dans la mémoire physique.

Vous ne pouvez exécuter qu'une seule instance à la fois de la commande rcapd.

Attribut permettant de limiter l'utilisation de la mémoire physique pour les projets

Pour définir le seuil limite de la mémoire physique susceptible d'être allouée à un projet, il convient d'établir une taille résidente définie en ajoutant cet attribut à l'entrée de la base de données project :

rcap.max-rss

Quantité totale de mémoire physique, en octets, mise à la disposition des processus dans le projet.

L'instruction suivante dans le fichier /etc/project fixe, par exemple, la taille résidente définie à 10 giga-octets pour le projet appelé db.


db:100::db,root::rcap.max-rss=10737418240

Remarque –

Le système peut éventuellement arrondir la valeur indiquée en fonction de la taille de page.


Il est possible d'exécuter la commande projmod pour définir l'attribut rcap.max-rss dans le fichier /etc/project :


# projmod -s -K rcap.max-rss=10GB db

Le fichier /etc/project contient alors la ligne suivante :


db:100::db,root::rcap.max-rss=10737418240

Configuration de la commande rcapd

Pour configurer le démon d'allocation restrictive, vous ferez appel à la commande rcapadm. Vous pouvez effectuer les actions suivantes :

Pour configurer le démon, vous devez disposer des privilèges de superutilisateur ou posséder le profil Gestion des processus dans votre liste de profils. Le rôle Gestionnaire de processus et le rôle Administrateur système bénéficient tous les deux du profil Gestion des processus.

Les modifications apportées à la configuration peuvent être incorporées à rcapd en fonction de l'intervalle de configuration défini (voir la section Intervalles des opérations rcapd) ou à la demande en envoyant un signal SIGHUP (voir la page de manuel kill(1)).

En l'absence d'argument, rcapadm affiche l'état actuel du démon d'allocation restrictive s'il a été configuré.

Les sous-sections suivantes expliquent comment mettre en œuvre la limitation des ressources, comment définir les valeurs de seuil et les intervalles d'analyse de la commande rcapd.

Utilisation du démon d'allocation restrictive sur un système doté de zones

Vous pouvez gérer le mode d'utilisation de la taille résidente définie (RSS) dans une zone en définissant la ressource capped-memory au moment de configurer la zone. Pour plus d'informations, reportez-vous à la section Solaris 10 8/07 : contrôle de la mémoire physique et ressource capped-memory. Il est possible d'exécuter la commande rcapd dans une zone, y compris dans la zone globale, en vue d'imposer des limites de mémoire aux projets de cette zone.

Vous pouvez définir une limite temporaire sur la quantité maximale de mémoire pouvant être utilisée par une zone spécifiée, jusqu'à la prochaine réinitialisation. Reportez-vous à la section Spécification d'une limitation temporaire de ressources pour une zone.

Si vous utilisez la commande rcapd dans une zone dans le but de réguler l'utilisation de la mémoire physique par les processus des projets faisant l'objet de restrictions de ressources, il est indispensable de configurer le démon dans cette zone.

Lorsque vous choisissez des limitations de mémoire pour des applications dans plusieurs zones, le fait qu'elles appartiennent à différentes zones n'a généralement pas d'importance sauf pour les services par zone. Les services par zone ont, en effet, besoin de mémoire. Il faut donc en tenir compte lorsquez vous calculez la quantité de mémoire physique réservée à un système et déterminez les limitations de mémoire.


Remarque –

Vous ne pouvez pas exécuter rcapd dans une zone marquée lx. Il est possible, cependant, d'utiliser le démon de la zone globale pour définir une limitation de mémoire dans la zone marquée.


Seuil d'allocation restrictive de la mémoire

Le seuil d'allocation restrictive de la mémoire correspond au pourcentage d'utilisation de la mémoire physique sur le système qui déclenche la restriction. En cas de dépassement du seuil prévu, les limitations de mémoire sont automatiquement appliquées. Ce pourcentage tient compte de la mémoire physique utilisée par les applications et le noyau. Le pourcentage d'utilisation détermine la façon dont les limitations de mémoire sont mises en œuvre.

Pour appliquer les limitations de mémoire, des pages de mémoire peuvent être retirées des charges de travail du projet.

Une charge de travail est autorisée à utiliser la mémoire physique jusqu'au seuil prévu. Elle peut cependant s'accaparer plus de mémoire tant que l'utilisation des ressources du système ne dépasse pas le seuil d'allocation restrictive de la mémoire.

Pour définir la valeur d'application du seuil, reportez-vous à la section Définition du seuil d'allocation restrictive de la mémoire.

Détermination des valeurs de seuil

Lorsque le seuil prévu pour un projet est trop bas, il est possible que la mémoire ne soit pas suffisante pour réaliser la charge de travail dans des conditions normales. La pagination liée à une surexploitation de la mémoire par la charge de travail a un effet négatif sur les performances du système.

Les projets dont le seuil est trop élevé peuvent disposer de la mémoire physique jusqu'à leur seuil respectif. Dans ce cas, la mémoire physique est effectivement gérée par le noyau et non pas par la commande rcapd.

Lors de la détermination des valeurs de seuil des projets, il est important de prendre en compte les facteurs suivants.

Impact sur le système d'E/S

Il est possible que le démon essaie de réduire la mémoire physique accaparée par la charge de travail d'un projet dès lors que la quantité de mémoire utilisée dépasse le seuil prévu pour le projet. Lors de l'application du seuil maximum d'utilisation de la mémoire physique, les périphériques de swap et les autres périphériques contenant des fichiers mappés par la charge de travail sont mis à contribution. Les performances des périphériques de swap sont donc un facteur essentiel pour déterminer les performances d'une charge de travail qui dépasse régulièrement le seuil fixé. Le traitement de la charge de travail revient à l'exécuter sur une machine possédant une quantité de mémoire physique équivalente au seuil prévu pour la charge de travail.

Impact sur l'utilisation de la CPU

L'utilisation de la CPU par le démon varie en fonction du nombre de processus mis en jeu dans les charges de travail du projet concerné par les limitations de ressources et des tailles des espaces d'adressage des charges de travail.

Une petite fraction du temps CPU du démon est consacrée à l'échantillonnage de chaque charge de travail. Plus le nombre de processus mis en jeu est important, plus la durée d'échantillonnage augmente.

Une autre partie du temps CPU est consacrée à l'application des seuils en cas de dépassement des limites. La durée est proportionnelle à la quantité de mémoire virtuelle impliquée. Le temps CPU utilisé augmente ou diminue pour faire face aux variations de la quantité d'espace d'adressage totale d'une charge de travail. Cette information est reportée dans la colonne vm de la sortie rcapstat. Pour plus d'informations, reportez-vous à la section Contrôle des ressources à l'aide de rcapstat et à la page de manuel rcapstat(1).

Prise en compte de la mémoire partagée

Le démon rcapd signale au RSS les pages de mémoire partagées avec d'autres processus ou mappées à plusieurs reprises au cours d'un même processus, sous forme d'estimation assez précise. Si des processus de projets différents partagent la même mémoire, celle-ci est prise en compte dans le total RSS pour tous les projets partageant la mémoire.

L'estimation peut être utilisée avec les charges de travail telles que celles des bases de données, qui se servent de la mémoire partagée de manière importante. Pour les charges de travail de base de données, il est également possible d'utiliser un échantillon de l'utilisation habituelle d'un projet afin de déterminer une valeur limite initiale appropriée à partir du résultat des options -J ou -Z de la commande prstat. Pour plus d'informations, reportez-vous à la page de manuel prstat(1M).

Intervalles des opérations rcapd

Vous pouvez régler les intervalles de contrôle périodique de la commande rcapd.

Tous les intervalles sont exprimés en secondes. Les opérations effectuées par rcapd et les valeurs d'intervalle par défaut sont décrites dans le tableau suivant.

Opération 

Valeur d'intervalle par défaut en secondes 

Description 

scan

15 

Nombre de secondes entre chaque analyse des processus ayant rejoint ou quitté une charge de travail d'un projet. La valeur minimum est de 1 seconde. 

sample

Nombre de secondes entre chaque échantillonnage de la taille de mémoire résidente et les applications des limites correspondantes. La valeur minimum est de 1 seconde. 

report

5  

Nombre de secondes entre les mises à jour des statistiques de pagination. Si la valeur choisie est 0, les statistiques ne sont pas mises à jour et la sortie obtenue avec rcapstat n'est pas actualisée.

config

60 

Nombre de secondes entre chaque reconfiguration. Dans un événement de reconfiguration, rcapadm vérifie la présence de mises à jour dans le fichier de configuration et analyse la base de données project afin de déterminer si elle contient de nouvelles limitations ou si les limitations ont été révisées. L'envoi d'un signal SIGHUP à la commande rcapd provoque une reconfiguration immédiate.

Pour régler les intervalles, reportez-vous à la section Définition des intervalles de fonctionnement.

Détermination des intervalles d'analyse rcapd

L'intervalle d'analyse définit la fréquence à laquelle rcapd recherche de nouveaux processus. L'analyse prend plus de temps sur les systèmes comptant de nombreux processus en cours d'exécution. Si tel est le cas, il est préférable de rallonger l'intervalle afin de réduire le temps CPU global utilisé. Il ne faut cependant pas oublier que l'intervalle représente également la durée minimale des processus pour qu'ils soient assignés à une charge de travail à ressources limitées. Or, si des charges de travail exécutent de nombreux processus à durée réduite, rcapd risque de ne pas allouer les processus à une charge de travail si l'intervalle d'analyse est trop long.

Détermination des intervalles d'échantillonnage

L'intervalle d'échantillonnage configuré avec rcapadm correspond au délai d'attente le plus court avant que rcapd échantillonne l'utilisation d'une charge de travail et applique la limitation prévue en cas de dépassement. Si vous réduisez cet intervalle, rcapd appliquera de façon plus régulière les limitations prévues, ce qui aura pour effet d'augmenter les E/S liées à la pagination. À l'inverse, un intervalle d'échantillonnage plus court peut limiter l'impact d'une brusque augmentation de la mémoire physique utilisée par une charge de travail sur les autres charges de travail. Le délai entre chaque échantillonnage (c'est-à-dire la durée pendant laquelle la charge de travail peut utiliser de la mémoire sans encombre et même exploiter la mémoire allouée à d'autres charges de travail) est limité.

Si l'intervalle d'échantillonnage prévu pour rcapstat est inférieur à celui appliqué à rcapd avec rcapadm, certains intervalles risquent d'être équivalents à zéro. Cette situation est due au fait que rcapd ne met pas à jour les statistiques au même rythme que rcapadm. L'intervalle spécifié avec rcapadm est indépendant de l'intervalle d'échantillonnage utilisé par rcapstat.

Contrôle des ressources à l'aide de rcapstat

Servez-vous de la commande rcapstat pour gérer l'utilisation des ressources des projets concernés par les limitations de ressources. Pour afficher un exemple de rapport rcapstat, reportez-vous à la section Établissement de rapports à l'aide de la commande rcapstat.

Vous pouvez définir l'intervalle d'échantillonnage pour le rapport et spécifier le nombre de répétitions des statistiques.

intervalle

Spécifie l'intervalle d'échantillonnage en secondes. La valeur par défaut est de 5 secondes.

count

Indique le nombre de fois où les statistiques sont répétées. Par défaut, rcapstat établit des statistiques jusqu'à la réception d'un signal de fin ou jusqu'à l'arrêt du processus rcapd.

Les statistiques de pagination dans le premier rapport émis par rcapstat présentent l'activité depuis le démarrage du démon. Les rapports suivants reflètent l'activité depuis le dernier rapport.

Le tableau suivant décrit les en-têtes de colonne d'un rapport rcapstat.

En-têtes de colonne rcapstat

Description 

id

Id du projet auquel s'applique la restriction de ressource. 

project

Nom du projet. 

nproc

Nombre de processus dans le projet. 

vm

Taille de la mémoire virtuelle totale utilisée par les processus du projet, tous fichiers et périphériques mappés inclus, en kilo-octets (K), méga-octets (M) ou giga-octets (G). 

rss

Estimation de la quantité totale de taille de mémoire résidente définie des processus du projet, en kilo-octets (Ko), méga-octets (Mo) ou giga-octets (G), à l'exclusion des pages partagées. 

cap

Limite de taille résidente définie prévue pour le projet. Pour savoir comment définir les limitations de mémoire, reportez-vous à la section Attribut permettant de limiter l'utilisation de la mémoire physique pour les projets ou à la page de manuel rcapd(1M).

at

Quantité totale de mémoire que la commande rcapd a essayé de décharger depuis le dernier échantillonnage rcapstat.

vgat

Quantité moyenne de mémoire que la commande rcapd a essayé de décharger lors de chaque cycle d'échantillonnage ayant eu lieu depuis le dernier échantillonnage rcapstat . Vitesse à laquelle la commande rcapd échantillonne l'utilisation de la taille résidente définie pour les jeux avec rcapadm. Voir Intervalles des opérations rcapd.

pg

Quantité totale de mémoire que la commande rcapd a réussi à décharger depuis le dernier échantillonnage rcapstat.

avgpg

Estimation de la quantité moyenne de mémoire que la commande rcapd a réussi à décharger lors de chaque cycle d'échantillonnage ayant eu lieu depuis le dernier échantillonnage rcapstat . Vitesse à laquelle la commande rcapd échantillonne l'utilisation de la taille résidente définie pour les processus avec rcapadm. Voir Intervalles des opérations rcapd.

Commandes utilisées avec rcapd

Aide-mémoire des commandes 

Description 

rcapstat(1)

Gère l'utilisation des ressources des projets faisant l'objet d'une restriction de ressources . 

rcapadm(1M)

Configure le démon d'allocation restrictive, affiche l'état actuel du démon s'il a été configuré et active ou désactive la limitation des ressources.  

rcapd(1M)

Démon d'allocation restrictive des ressources.