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.