In diesem Kapitel werden die Grundstruktur der Ressourcenverwaltung erklärt und ein hypothetisches Server-Konsolidierungsprojekt beschrieben.
In diesem Kapitel werden folgende Themen behandelt:
In diesem Beispiel werden fünf Anwendungen auf einem einzigen System konsolidiert. Die Zielanwendungen haben unterschiedliche Ressourcenanforderungen, unterschiedlich hohe Benutzerzahlen und unterschiedliche Architekturen. Derzeit befindet sich jede Anwendung auf einem dedizierte Server, der so ausgelegt ist, dass er die Anforderungen der Anwendung erfüllt. Die Anwendungen und ihrer Eigenschaften sind in der folgenden Tabelle aufgeführt.
|
Beschreibung der Anwendung |
Eigenschaften |
|---|---|
|
Anwendungsserver |
Zeigt eine negative Skalierbarkeit über zwei CPUs hinaus |
|
Datenbankinstanz für den Anwendungsserver |
Ressourcenintensive Transaktionsverarbeitung |
|
Anwendungsserver in der Test- und Entwicklungsumgebung |
GUI-basiert, mit nicht getesteter Codeausführung |
|
Transaktionen verarbeitender Server |
Oberste Priorität hat die Reaktionszeit |
|
Eigenständige Datenbankinstanz |
Verarbeitet zahlreiche Transaktionen und dient mehreren Zeitzonen |
Die folgende Konfiguration dient zur Konsolidierung der Anwendungen auf einem System.
Der Anwendungsserver ist mit zwei CPU-Prozessorsets ausgestattet.
Die Datenbankinstanz für den Anwendungsserver und die eigenständige Datenbankinstanz werden auf ein einzelnes Prozessorset mit mindestens vier CPUs konsolidiert. Der eigenständigen Datenbankinstanz werden 75 % dieser Ressource garantiert.
Der Anwendungsserver für die Test- und Entwicklungsumgebung benötigt die Scheduling-Klasse IA, um die UI-Reaktionsfähigkeit sicherzustellen. Speichereinschränkungen wurden eingerichtet, um die Auswirkungen von Programmen mit fehlerhaften Codes zu reduzieren.
Dem Server für die Transaktionsverarbeitung ist ein dediziertes Prozessorset mit mindestens zwei CPUs zugewiesen, um die Latenzzeit bei der Reaktion zu minimieren.
Diese Konfiguration deckt bekannte Anwendungen ab, die Prozessorzyklen in einem Ressourcenset ausführen und verbrauchen. Das heißt, es können Einschränkungen eingerichtet werden, mit denen die Prozessorressource zu den Sets übertragen werden, wo die Ressource benötigt wird.
Das Ziel wt-load ist so eingerichtet, dass stark ausgelastete Ressourcensets größere Ressourcenzuweisungen erhalten als Sets, die nur eine geringe Auslastung aufweisen.
Das Ziel locality ist auf tight eingestellt. Bei dieser Einstellung wird die Prozessorlokalität maximiert.
Eine zusätzliche Einschränkung verhindert, dass die Auslastung eines beliebigen Ressourcensets 80 % übersteigt. Diese Einschränkung stellt sicher, dass Anwendungen Zugriff auf die angeforderten Ressourcen erhalten. Weiterhin ist das Ziel, die Auslastung unter 80 % zu halten, für das Transaktions-Prozessorset doppelt so wichtig wie alle anderen angegebenen Ziele. Diese Wichtigkeit ist in der Konfiguration definiert.
Bearbeiten Sie die Datenbankdatei /etc/project. Fügen Sie Einträge hinzu, um die erforderlichen Resource Controls zu implementieren und ordnen Sie Benutzer zu den Resource Pools zu. Dann zeigen Sie die Datei an.
# 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) . . . |
Das Entwicklungssystem muss Aufgaben im Entwicklungsprojekt ausführen, da der Zugriff auf dieses Projekt auf Benutzergruppen-IDs (GIDs) basiert.
Erstellen Sie eine Eingabedatei namens pool.host zur Konfiguration der erforderlichen Resource Pools. Zeigen Sie die Datei an.
# 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") |
Aktualisieren Sie die Konfiguration mit der Eingabedatei pool.host.
# poolcfg -f pool.host |
Aktivieren Sie die Konfiguration.
# pooladm -c |
Die Grundstruktur der Konfiguration ist jetzt auf dem System betriebsfähig.
Zum Anzeigen der Grundstruktur der Konfiguration, in der auch vom das System erstellte Standardelemente enthalten sind, geben Sie Folgendes ein:
# 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
|
Im Folgenden finden Sie eine grafische Darstellung der Grundstruktur der Konfiguration.

Mit dem Pool db_pool werden der eigenständigen Datenbankinstanz 75 % der CPU-Ressource garantiert.