Il existe quatre attributs par noeud limite associé à l'ordonnanceur d'UC de Solaris Resource Manager : cpu.shares, cpu.myshares , cpu.usage et cpu.accrue. La sortie de liminfo( 1SRM) affiche ces attributs ainsi que d'autres valeurs utiles.
Sous Solaris Resource Manager, l'ordonnancement est mis en oeuvre au moyen de la classe d'ordonnancement SHR, qui comprend la prise en charge des commandes nice(1), priocntl (1), renice(1) et dispadmin(1M). Au niveau de l'appel système, SHR est compatible avec la classe d'ordonnancement TS.
L'attribut cpu.shares d'un utilisateur permet de répartir les droits à l'UC en fonction du père et des homologues actifs de l'utilisateur. L'attribut cpu.myshares est significatif uniquement si l'utilisateur a des utilisateurs enfants actifs ; il permet de déterminer la proportion de droits à l'UC en fonction de ces derniers.
Par exemple, si les utilisateurs A et B sont les seuls enfants du père P et que A, B et P ont chacun une part au sein du groupe P (cpu.shares est fixé à 1 pour A et B, et cpu.myshares est fixé à 1 pour P), chacun à droit à un tiers du total des ressources de l'UC accordées au groupe.
Les droits à l'UC d'un utilisateur sont donc tributaires des droits relatifs du père, ce qui dépend des valeurs relatives de cpu.shares du père sur ses homologues et de cpu.myshares du grand-père, et ainsi de suite en remontant l'arbre.
Aux fins de la gestion du système, les processus liés au noeud limite root ne sont pas concernés par les attributs des parts. Tout processus lié au noeud limite root obtient toujours la plupart des ressources de l'UC qu'il demande.
Il est important que les processus qui consomment beaucoup de ressources d'UC ne soient pas liés au noeud limite root, à défaut de quoi l'exécution d'autres processus serait grandement ralentie. Pour l'éviter, les précautions ci-après doivent être observées :
Le compte de l'administrateur central doit posséder son propre UID, qui doit différer de celui du superutilisateur. Ce compte doit être utilisé pour ouvrir une session en vue d'effectuer des tâches non administratives. Si l'UID d'un superutilisateur est requis pour exécuter des fonctions administratives, l'administrateur central peut se servir de la commande su(1) afin de changer d'UID tout en demeurant relié à son propre noeud limite.
La commande srmuser( 1SRM) peut être utilisée dans les scripts init.d(4) pour attacher tout processus démon à un noeud limite non root. Tout processus lancé depuis le script de démarrage détient par défaut un UID root et est relié au noeud limite root. La commande "user" permet aux démons de conserver un UID root tout en demeurant reliés à leur propre noeud limite, ce qui évite les problèmes si un démon accroît sa consommation de ressources de l'UC.
Les chefs de groupe de l'arbre d'ordonnancement n'ont pas tous à représenter les utilisateurs qui exécutent actuellement des processus, et il n'est pas nécessaire de leur allouer une part des ressources de l'UC. Ces noeuds limites peuvent être indiqués en fixant leur attribut cpu.myshares à zéro. L'attribut cpu.accrue dans un tel chef de groupe comprend néanmoins la charge totale pour tous les membres de son groupe.
Les attributs cpu.shares et cpu.myshares déterminent la part d'UC attribuée à chaque noeud limite actif en pourcentage. Les parts des utilisateurs inactifs n'ont aucune incidence sur la part attribuée. Si un seul utilisateur est actif, il disposera de 100% des ressources de l'UC. Si seulement deux utilisateurs sont actifs et disposent de parts égales dans le même groupe, chacun recevra une part de 50%. Pour en savoir davantage sur le calcul de la part attribuée, consultez la rubrique Calcul de la part attribuée.
La valeur de l'attribut cpu.usage augmente chaque fois qu'un processus relié au noeud limite est chargé pour un temps d'UC. Cette valeur décroît exponentiellement à un taux déterminé par le paramètre global de décroissance d'utilisation de Solaris Resource Manager. Le taux de décroissance (exprimé par une demi-vie en secondes) est défini par la commande srmadm(1MSRM).
Bien que tous les processus soient dotés d'un noeud limite sans égard à leur classe d'ordonnancement actuelle, ceux qui se trouvent à l'extérieur de la classe d'ordonnancement SHR ne sont jamais chargés.
La valeur de l'attribut d'utilisation cumulative augmente dans les mêmes proportions que celle de l'attribut d'utilisation, mais elle ne décroît pas. Elle représente donc l'utilisation cumulative totale pour tous les processus ayant été reliés au noeud limite et à ses membres depuis la dernière réinitialisation de l'attribut.
La part effective courante d'un noeud limite est déterminée par sa part attribuée et par l'attribut cpu.usage. L'ordonnanceur de Solaris Resource Manager ajuste les priorités de tous les processus reliés à un noeud limite de façon à rendre leur taux de traitement proportionnel à la part effective du noeud et inversement proportionnel au nombre de processus exécutables qui y sont reliés.
Chaque processus relié à un noeud limite intègre des données propres à Solaris Resource Manager et dont la maintenance est assurée par le noyau du système d'exploitation. Aux fins de l'ordonnancement, la plus importante de ces valeurs est sharepri. Les processus dont la valeur sharepri est la plus basse ont en tout temps priorité pour leur exécution par l'UC.