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

Contraintes et objectifs de configuration

Lorsque vous apportez des modifications à une configuration, poold agit dans le sens que vous indiquez, c'est-à-dire en tenant compte de la série de contraintes et d'objectifs que vous définissez. poold utilise vos spécifications pour juger de la valeur relative des différentes possibilités de configuration par rapport à la configuration existante. poold change ensuite les affectations de ressources de la configuration actuelle pour établir les nouvelles configurations candidates.

Contraintes de configuration

Les contraintes limitent l'étendue des configurations possibles en empêchant certaines modifications potentielles. Les contraintes suivantes, spécifiées dans la configuration libpool, sont disponibles.

Pour plus d'informations au sujet des propriétés des pools, reportez-vous à la page de manuel libpool(3LIB) et à la section Propriétés des pools.

Propriété pset.min et contraintes de propriété pset.max

Ces deux propriétés fixent le nombre limite de processeurs (valeurs minimum et maximum) qu'il est possible d'allouer à un jeu de processeurs. Pour en savoir plus sur ces propriétés, reportez-vous au Tableau 12–1.

En vertu de ces contraintes, les ressources d'une partition peuvent être allouées à d'autres partitions dans la même instance Solaris. Pour accéder à la ressource, il convient d'établir une liaison avec un pool associé au lot de ressources. La liaison est réalisée automatiquement au moment de la connexion ou manuellement par un administrateur doté du privilège PRIV_SYS_RES_CONFIG.

Contrainte de propriété cpu.pinned

La propriété cpu-pinned stipule que le service des pools de ressources dynamiques n'est pas habilité à transférer une CPU donnée à partir de son jeu de processeurs d'origine. Vous pouvez définir cette propriété libpool pour optimiser l'utilisation du cache d'une application s'exécutant dans un jeu de processeurs.

Pour en savoir plus sur cette propriété, reportez-vous au Tableau 12–1.

Contrainte de propriété pool.importance

La propriété pool.importance décrit l'importance relative d'un pool tel qu'elle est définie par l'administrateur.

Objectifs de configuration

Les objectifs sont définis de la même manière que pour les contraintes. L'ensemble complet d'objectifs est documenté dans le Tableau 12–1.

Il existe deux catégories d'objectifs.

Objectif dépendant de la charge de travail

Il s'agit d'un objectif qui varie en fonction de la nature de la charge de travail s'exécutant sur le système, à l'image de l'objectif utilization. Le chiffre d'utilisation pour un lot de ressources dépend de la nature de la charge de travail active.

Objectif indépendant de la charge de travail

Il s'agit d'un objectif qui ne varie pas en fonction de la nature de la charge de travail s'exécutant sur le système. C'est le cas de l'objectif CPU locality. L'estimation du voisinage d'un lot de ressources ne dépend pas de la nature de la charge de travail active.

Vous pouvez définir trois types d'objectif.

Nom 

Éléments valides 

Opérateurs 

Valeurs 

wt-load

system

SO 

SO 

locality

pset

SO 

loose | tight | none

utilization

pset

< > ~

0100%

Les objectifs sont stockés dans les chaînes de propriétés dans la configuration libpool. Les noms des propriétés se présentent de la façon suivante :

La syntaxe des objectifs est la suivante :

Tous les objectifs possèdent un préfixe relatif au niveau d'importance (facultatif). Ce niveau d'importance fait office de multiplicateur pour l'objectif et augmente, par conséquent, sa contribution à l'évaluation de la fonction de l'objectif. La plage d'évaluation va de 0 à INT64_MAX (9223372036854775807). Si vous omettez de spécifier le niveau d'importance, la valeur par défaut est 1.

Certains types d'élément acceptent plusieurs types d'objectif. C'est le cas, par exemple, de pset. Vous pouvez, en effet, définir plusieurs types d'objectif pour ces éléments. Il est possible également de fixer plusieurs objectifs d'utilisation pour un même élément pset.

La section Établissement des objectifs de configuration propose plusieurs exemples d'utilisation.

Objectif wt-load

L'objectif wt-load favorise les configurations faisant correspondre les allocations aux utilisations réelles des ressources. Un lot de ressources nécessitant plus de ressources bénéficiera de plus de ressources lorsque cette objectif est actif. wt-load est l'abréviation de weighted load (charge pondérée).

Utilisez cet objectif lorsque vous êtes satisfait des contraintes que vous avez établies à l'aide des propriétés minimum et maximum et souhaitez que le démon manipule librement les ressources dans les limites autorisées.

Objectif locality

L'objectif locality change l'impact du voisinage, tel qu'il est mesuré par les données du groupe de voisinages (lgroup), sur la configuration sélectionnée. La latence est une autre définition du voisinage. lgroup décrit les ressources de la CPU et de la mémoire. lgroup est utilisé par le système Solaris pour déterminer la distance entre les ressources en fonction du facteur temps. Pour plus d'informations sur l'abstraction du groupe de voisinages, reportez-vous à la section Locality Groups Overview du Programming Interfaces Guide.

Cet objectif peut prendre l'une des trois valeurs suivantes :

tight

Si cette valeur est définie, les configurations qui maximisent le voisinage des ressources sont favorisées.

loose

Si cette valeur est définie, les configurations qui minimisent le voisinage des ressources sont favorisées.

none

Si cette valeur est définie, le voisinage des ressources n'a pas d'influence sur les configurations favorisées. Il s'agit de la valeur par défaut de l'objectif locality.

En général, l'objectif locality doit être défini sur tight. Cependant, pour optimiser la bande passante de la mémoire ou minimiser l'impact des opérations de reconfiguration dynamique sur un lot de ressources, vous pouvez lui donner la valeur loose ou conserver le paramètre par défaut (none).

Objectif utilization

L'objectif utilization favorise les configurations allouant des ressources aux partitions ne satisfaisant pas l'objectif d'utilisation spécifié.

Il est défini au moyen d'opérateurs et de valeurs. Les opérateurs qu'il est possible d'utiliser sont les suivants :

<

L'opérateur « inférieur à » indique que la valeur spécifiée représente une valeur cible maximum.

>

L'opérateur « supérieur à » indique que la valeur spécifiée représente une valeur cible minimum.

~

Cet opérateur Indique que la valeur spécifiée est la valeur cible pour laquelle une certaine fluctuation est acceptable.

Un seul objectif d'utilisation peut être prévu pour chaque type d'opérateur dans le cadre d'un jeu de processeurs (pset).

Vous pouvez combiner un opérateur < et un opérateur > pour définir une plage. Les valeurs seront validées pour éviter tout chevauchement.

Exemple d'utilisation des objectifs dans une configuration

Dans l'exemple suivant, poold permet d'évaluer ces objectifs pour le jeu de processeurs (pset) :


Exemple 12–1 Évaluation des objectifs avec poold

pset.poold.objectives "utilization > 30; utilization < 80; locality tight"


La section Établissement des objectifs de configuration propose plusieurs exemples supplémentaires d'utilisation.

Propriétés poold

Il existe quatre catégories de propriétés :

Tableau 12–1 Noms des propriétés définies

Nom de la propriété 

Type 

Catégorie 

Description 

system.poold.log-level

Chaîne 

Configuration 

Niveau de consignation 

system.poold.log-location

Chaîne 

Configuration 

Lieu de consignation 

system.poold.monitor-interval

uint64 

Configuration 

Intervalle de contrôle 

system.poold.history-file

Chaîne 

Configuration 

Emplacement de l'historique des décisions 

pset.max

uint64 

Contrainte 

Nombre maximum de CPU pour ce jeu de processeurs 

pset.min

uint64 

Contrainte 

Nombre minimum de CPU pour ce jeu de processeurs 

cpu.pinned

booléen 

Contrainte 

CPU rattachées à ce jeu de processeurs 

system.poold.objectives

Chaîne 

Objectif 

Chaîne formatée après la syntaxe d'expression d'objectif poold

pset.poold.objectives

Chaîne 

Objectif 

Chaîne formatée après la syntaxe d'expression de poold

pool.importance

int64 

Paramètre d'objectif 

Importance définie par l'utilisateur