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

Chapitre 14 Exemple de configuration de la gestion des ressources

Ce chapitre vous propose de découvrir la structure de gestion des ressources à travers un projet de consolidation de serveur.

Il comprend les sections suivantes :

Configuration à consolider

Dans cet exemple, cinq applications sont consolidées dans un seul système. Les besoins en ressources des applications en question sont variables. Leurs utilisateurs et leurs architectures sont également différents. Chaque application fait actuellement partie d'un serveur dédié conçu pour répondre à leurs exigences. Le tableau suivant donne un aperçu de ces applications et de leurs caractéristiques.

Description de l'application 

Caractéristiques 

Serveur d'applications 

Évolutivité négative au-delà de 2 CPU 

Instance de base de données pour le serveur d'applications 

Traitement intensif de transactions 

Serveur d'applications dans un environnement de test et de développement 

Exécution de code non testé depuis une interface graphique 

Serveur de traitement de transactions 

Temps de réponse primordial 

Instance de base de données autonome 

Traitement d'un grand nombre de transactions et gestion de plusieurs fuseaux horaires 

Configuration de la consolidation

La configuration suivante a pour but de consolider les applications au sein d'un seul système.

Cette configuration couvre les applications connues exécutant et consommant des cycles de processeur dans chaque lot de ressources. Il est donc possible d'établir des contraintes afin de transférer les ressources du processeur vers les jeux qui en font la demande.

Il a fallu également prévoir une contrainte supplémentaire pour que l'utilisation du lot de ressources ne dépasse par le seuil de 80 %. Cela permet de s'assurer que les applications ont accès aux ressources dont elles ont besoin. En ce qui concerne le jeu de processeurs de transaction, l'objectif de maintenir l'utilisation en dessous des 80 % est deux fois plus importante que tout autre objectif fixé. Cela sera pris en compte dans la configuration.

Création de la configuration

Modifiez le fichier de base de données /etc/project. Ajoutez des entrées afin d'implémenter les contrôles de ressources nécessaires et de mapper les utilisateurs aux pools de ressources, puis visualisez le fichier.


# cat /etc/project
.
.
.
user.app_server:2001:Production Application Server:::project.pool=appserver_pool
user.app_db:2002:App Server DB:::project.pool=db_pool;project.cpu-shares=(privileged,1,deny)
development:2003:Test and development::staff:project.pool=dev_pool;
process.max-address-space=(privileged,536870912,deny)keep with previous line
user.tp_engine:2004:Transaction Engine:::project.pool=tp_pool
user.geo_db:2005:EDI DB:::project.pool=db_pool;project.cpu-shares=(privileged,3,deny)
.
.
.

Remarque –

L'équipe de développement est tenue d'exécuter les tâches prévues dans le projet de développement, car l'accès au projet est basé sur un ID de groupe d'utilisateurs (GID).


Créez un fichier d'entrée appelé pool.host qui servira à configurer les pools de ressources nécessaires. Visualisez le fichier.


# cat pool.host
create system host
create pset dev_pset (uint pset.min = 0; uint pset.max = 2)
create pset tp_pset (uint pset.min = 2; uint pset.max=8)
create pset db_pset (uint pset.min = 4; uint pset.max = 6)
create pset app_pset (uint pset.min = 1; uint pset.max = 2)
create pool dev_pool (string pool.scheduler="IA")
create pool appserver_pool (string pool.scheduler="TS")
create pool db_pool (string pool.scheduler="FSS")
create pool tp_pool (string pool.scheduler="TS")
associate pool dev_pool (pset dev_pset)
associate pool appserver_pool (pset app_pset)
associate pool db_pool (pset db_pset)
associate pool tp_pool (pset tp_pset)
modify system tester (string system.poold.objectives="wt-load")
modify pset dev_pset (string pset.poold.objectives="locality tight; utilization < 80")
modify pset tp_pset (string pset.poold.objectives="locality tight; 2: utilization < 80")
modify pset db_pset (string pset.poold.objectives="locality tight;utilization < 80")
modify pset app_pset (string pset.poold.objectives="locality tight; utilization < 80")

Mettez à jour la configuration à l'aide du fichier d'entrée pool.host.


# poolcfg -f pool.host

Rendez la configuration active.


# pooladm -c

La structure est maintenant opérationnelle sur le système.

Visualisation de la configuration

Pour afficher la configuration de la structure, laquelle contient également des éléments par défaut créés par le système, entrez l'instruction suivante :


# pooladm
system host
        string  system.comment
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916
        string  system.poold.objectives wt-load

        pool dev_pool
                int     pool.sys_id 125
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler IA
                pset    dev_pset
  
        pool appserver_pool
                int     pool.sys_id 124
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    app_pset
      
        pool db_pool
                int     pool.sys_id 123
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler FSS
                pset    db_pset
  
        pool tp_pool
                int     pool.sys_id 122
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    tp_pset
 
        pool pool_default
                int     pool.sys_id 0
                boolean pool.default true
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    pset_default

        pset dev_pset
                int     pset.sys_id 4
                string  pset.units population
                boolean pset.default false
                uint    pset.min 0
                uint    pset.max 2
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80

        pset tp_pset
                int     pset.sys_id 3
                string  pset.units population
                boolean pset.default false
                uint    pset.min 2
                uint    pset.max 8
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; 2: utilization < 80

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

        pset db_pset
                int     pset.sys_id 2
                string  pset.units population
                boolean pset.default false
                uint    pset.min 4
                uint    pset.max 6
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 4
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 5
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 6
                        string  cpu.comment 
                        string  cpu.status on-line
        pset app_pset
                int     pset.sys_id 1
                string  pset.units population
                boolean pset.default false
                uint    pset.min 1
                uint    pset.max 2
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80
                cpu
                        int     cpu.sys_id 7
                        string  cpu.comment 
                        string  cpu.status on-line

        pset pset_default
                int     pset.sys_id -1
                string  pset.units population
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 4294967295
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line

Voici une répresentation graphique de la structure.

Figure 14–1 Configuration de la consolidation serveur

L'illustration présente un exemple de configuration serveur.


Remarque –

Dans le pool db_pool, l'instance de base de données autonome a la garantie d'obtenir 75 % des ressources de la CPU.