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 :
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 |
La configuration suivante a pour but de consolider les applications au sein d'un seul système.
Le serveur d'applications possède un jeu de processeurs à double CPU.
L'instance de base de données pour le serveur d'applications et l'instance de base de données autonome sont consolidées sur un seul jeu de processeurs doté d'au moins quatre CPU. L'instance de base de données autonome a la garantie d'obtenir 75 % des ressources.
Le serveur d'applications de test et de développement a besoin de la classe de programmation IA pour garantir le taux de réponse de l'interface utilisateur. L'utilisation de la mémoire est soumise à des restrictions pour atténuer les effets de générations de code incorrectes.
Un jeu de processeurs dédié d'au moins deux CPU est alloué au serveur de traitement des transactions pour minimiser le temps de latence des réponses.
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.
Pour accorder des allocations plus importantes aux lots de ressources utilisés de façon intensive, l'objectif wt-load a été défini.
L'objectif locality a la valeur tight , ce qui a pour effet d'optimiser la localité du processeur.
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.
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) . . . |
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.
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.
Dans le pool db_pool, l'instance de base de données autonome a la garantie d'obtenir 75 % des ressources de la CPU.