Systemverwaltungshandbuch: Oracle Solaris Container - Ressourcenverwaltung und Solaris Zones

Kapitel 14 Beispiel für die Konfiguration der Ressourcenverwaltung

In diesem Kapitel werden die Grundstruktur der Ressourcenverwaltung erklärt und ein hypothetisches Server-Konsolidierungsprojekt beschrieben.

In diesem Kapitel werden folgende Themen behandelt:

Zu konsolidierende Konfiguration

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 

Konsolidierungskonfiguration

Die folgende Konfiguration dient zur Konsolidierung der Anwendungen auf einem System.

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.

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.

Erstellen der Konfiguration

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)
.
.
.

Hinweis –

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.

Anzeigen der Konfiguration

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.

Abbildung 14–1 Konfigurationen einer Serverkonsolidierung

Die Darstellung zeigt eine hypothetische Serverkonfiguration.


Hinweis –

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