Navigationslinks überspringen | |
Druckansicht beenden | |
![]() |
SystemAdministrationshandbuch: Oracle Solaris Container - RessourcenAdministration und Solaris Zones Oracle Solaris 10 1/13 Information Library (Deutsch) |
1. Einführung in Solaris 10-RessourcenAdministration
2. Einführung in Projekte und Aufgaben
3. Verwalten von Projekten und Aufgaben (Vorgehen)
4. Einführung in das Extended Accounting
5. Verwalten des Extended Accounting (Vorgehen)
6. Einführung in die Resource Controls
Neuerungen bei den Resource Controls in Solaris 10
Das Konzept von Resource Controls
Maximaler Ressourcenverbrauch und Resource Controls
Prozessübergreifende Kommunikation und Resource Controls
Einschränkungsmechanismen der Resource Controls
Konfigurieren von Resource Controls und Attributen
Resource Control-Werte und Berechtigungsstufen
Globale und lokale Aktionen mit Resource Control-Werten
Globale Aktionen mit Resource Control-Werten
Lokale Aktionen mit Resource Control-Werten
Flags und Eigenschaften von Resource Controls
Anwenden von Resource Controls
Vorübergehendes Aktualisieren der Resource Control-Werte bei laufendem System
Aktualisieren des Protokollierungsstatus
Aktualisieren von Resource Controls
Mit Resource Controls verwendete Befehle
7. Verwalten von Resource Controls (Vorgehen)
8. Einführung in den Fair Share Scheduler
9. Verwalten des Fair Share Scheduler (Vorgehen)
10. Einführung in die Steuerung des reellen Arbeitsspeichers mithilfe des Resource Capping Daemons
11. Verwalten des Resource Capping Daemons (Vorgehen)
12. Einführung in Resource Pools
13. Erstellen und Verwalten von Resource Pools (Vorgehen)
14. Beispiel für die Konfiguration der RessourcenAdministration
15. Resource Controls in der Solaris Management-Konsole
16. Einführung in Solaris Zones
17. Einführung in die Konfiguration einer nicht-globalen Zone
18. Planen und Konfigurieren von nicht-globalen Zonen (Vorgehen)
19. Einführung in das Installieren, Anhalten, Klonen und Deinstallieren von nicht-globalen Zonen
20. Installieren, Booten, Anhalten, Deinstallieren und Klonen von nicht-globalen Zonen (Vorgehen)
21. Einführung in das Anmeldeverfahren bei einer nicht-globalen Zone
22. Anmelden bei nicht-globalen Zonen (Vorgehen)
23. Verschieben und Migrieren von nicht-globalen Zonen (Vorgehen)
24. Oracle Solaris 10 9/10: Migrieren eines reellen Oracle Solaris-Systems in eine Zone (Aufgaben)
27. Verwaltung der Oracle Solaris-Zonen (Überblick)
28. Verwaltung der Oracle Solaris-Zonen (Aufgaben)
29. Aktualisieren eines Oracle Solaris 10-Systems mit installierten nicht-globalen Zonen
30. Behebung von verschiedenen Problemen mit Oracle Solaris Zones
31. Allgemeine Informationen zu Branded Zones und der Linux Branded Zone
32. Einführung in die Planung der Konfiguration einer lx Branded Zone
33. Konfigurieren einer lx Branded Zone (Vorgehen)
34. Einführung in das Installieren, Booten, Anhalten, Klonen und Deinstallieren von lx Branded Zones
35. Installieren, Booten, Anhalten, Deinstallieren und Klonen von lx Branded Zones (Vorgehen)
36. Anmelden bei lx Branded Zones (Vorgehen)
37. Verschieben und Migrieren von lx Branded Zones (Vorgehen)
38. Verwalten und Ausführen von Anwendungen in lx Branded Zones (Vorgehen)
Resource Controls werden über die project-Datenbank konfiguriert. Lesen Sie dazu Kapitel 2, Einführung in Projekte und Aufgaben. Resource Controls und andere Attribute werden im letzten Feld eines project-Datenbankeintrags gesetzt. Die den einzelnen Resource Controls zugewiesenen Werte werden in Klammern eingeschlossen und erscheinen als durch Kommata getrennter Klartext. Die Werte in Klammern bilden eine „Aktionsklausel“. Jede Aktionsklausel setzt sich aus einem Schwellenwert, einer Berechtigungsstufe und einer Aktion zusammen, die einem bestimmten Schwellenwert zugeordnet ist. Jede Resource Control kann mehrere Aktionsklauseln enthalten, die ebenfalls durch Kommata voneinander getrennt sind. Der folgende Eintrag definiert taskbasiert eine Lightweight-Prozessgrenze und prozessbasiert einen Grenzwert für die maximale CPU-Zeit für ein Projekt. Wenn ein Prozess eine Stunde lang andauert, sendet die Resource Control process.max-cpu-time dem Prozess ein SIGTERM. Dauert der Prozess 1 Stunde und 1 Minute an, wird ein SIGKILL an den Prozess gesendet (siehe Tabelle 6-3).
development:101:Developers:::task.max-lwps=(privileged,10,deny); process.max-cpu-time=(basic,3600,signal=TERM),(priv,3660,signal=KILL) typed as one line
Hinweis - Auf Systemen mit aktivierten Zonen werden zonenweite Resource Controls in einem etwas anderen Format in der Zonenkonfiguration angegeben. Weitere Informationen finden Sie unter Konfigurationsdaten in einer Zone.
Mit dem Befehl rctladm können Sie Echtzeitabfragen an Resource Controls mit globalem Geltungsbereich richten und Modifikationen daran vornehmen. Mit dem Befehl prctl können Sie Echtzeitabfragen an Resource Controls mit lokalem Geltungsbereich richten und Modifikationen daran vornehmen.
Weitere Informationen finden Sie unter Globale und lokale Aktionen mit Resource Control-Werten, rctladm(1M) und prctl(1).
Hinweis - Auf einem System mit installierten Zonen können Sie rctladm in einer nicht-globalen Zone nicht zum Ändern von Einstellungen verwenden. Mit rctladm können Sie in einer nicht-globalen Zone den globalen Logging-Status jeder Resource Control anzeigen.
In der folgenden Tabelle ist eine Liste der standardmäßige Resource Controls für dieses Release aufgeführt.
Dabei wird die Ressource beschrieben, die von einer Resource Control eingeschränkt wird. Darüber hinaus sind die Standardeinheiten in der Tabelle aufgeführt, die von der project-Datenbank für diese Ressourcen verwendet werden. Es gibt zwei Arten von Standardeinheiten:
Mengen stellen eine begrenzte Anzahl dar.
Indizes stellen einen maximal gültigen Bezeichner dar.
Somit gibt project.cpu-shares die Anzahl der Shares an, auf die das Projekt Anrecht hat. process.max-file-descriptor gibt die maximale Anzahl an Dateien an, die einem Prozess vom Systemaufruf open(2) zugewiesen werden können.
Tabelle 6-1 Standardmäßige Resource Controls
|
Sie können die Standardwerte für Resource Controls auf einem System anzeigen, für das keine Resource Controls eingestellt oder geändert wurden. Ein solches System enthält ausschließlich Standardeinträge in der Datei /etc/system oder in der project-Datenbank. Zum Anzeigen der Werte verwenden Sie den Befehl prctl.
Zonenweite Resource Controls schränken die gesamte Ressourcennutzung aller Prozesseinheiten innerhalb einer Zone ein. Zonenweite Resource Controls können auch mithilfe der globalen Eigenschaftennamen eingestellt werden. Dies wird unter Einrichten von zonenweiten Resource Controls und unter So konfigurieren Sie die Zone beschrieben.
Tabelle 6-2 Zonenweite Resource Controls
|
Informationen zum Konfigurieren der zonenweiten Resource Controls finden Sie unter Ressourcentypeigenschaften und So konfigurieren Sie die Zone. Wie die zonenweiten Resource Controls in lx Branded Zones verwendet werden, können Sie unter So konfigurieren, prüfen und schreiben Sie eine lx Branded Zone fest nachlesen.
Eine zonenweite Resource Control kann auch auf die globale Zone angewendet werden. Weitere Informationen finden Sie in Kapitel 17, Einführung in die Konfiguration einer nicht-globalen Zone und unter Verwenden des Fair Share Schedulers auf einem Oracle Solaris-System mit installierten Zonen.
Für alle Resource Controls sind globale Flags definiert, die den Typ aller Resource Controls kennzeichnen. Mit diesen Flags teilt das System Anwendungen, wie z. B. dem Befehl prctl, allgemeine Typinformationen mit. Anhand dieser Information können Anwendungen Folgendes feststellen:
Die für eine Resource Control geltende Einheit
Der korrekte Maßstab, wenn skalierte Werte zu interpretierten sind
Die folgenden globalen Flags sind verfügbar:
|
Skalierte Werte können mit Resource Controls verwendet werden. Das folgende Beispiel zeigt einen skalierten Schwellenwert:
task.max-lwps=(priv,1K,deny)
Hinweis - Einheitenmodifikatoren werden von den Befehlen prctl, projadd und projmod akzeptiert. Sie können Einheitenmodifikatoren nicht in der project-Datenbank verwenden.
Der Schwellenwert für eine Resource Control ist der Punkt, an dem die Durchsetzung lokaler Aktionen ausgelöst wird oder globale Aktionen, z. B. eine Protokollierung, auftreten können.
Jeder Schwellenwert für eine Resource Control muss einer Berechtigungsstufe zugewiesen sein. Diese Berechtigungsstufe muss einen der folgenden drei Typen aufweisen.
„basic“, dieser Typ kann vom Eigentümer des aufrufenden Prozesses bearbeitet werden
„privileged“, dieser Typ kann nur von berechtigten Aufrufern (Superuser) bearbeitet werden
„system“, dieser Typ ist für die Dauer der Betriebssysteminstanz feststehend
Eine Resource Control besitzt garantiert einen Systemwert, der entweder vom System oder dem Ressourcen-Provider definiert wird. Der Systemwert legt fest, wie viel der Ressource von der aktuellen Implementation des Betriebssystems bereitgestellt werden kann.
Es können beliebige viele „privileged“ Werte definiert werden, aber es ist nur ein „basic“ Wert zulässig. Vorgänge, die ohne Angabe eines „privileged“ Werts ausgeführt werden, wird standardmäßig ein „basic“ Wert zugeordnet.
Die Berechtigungsstufe eines Resource Control-Werts wird im Berechtigungsfeld des Resource Control-Block als RCTL_BASIC, RCTL_PRIVILEGED oder RCTL_SYSTEM definiert. Weitere Informationen finden Sie unter setrctl(2) Werte, denen die Berechtigungsstufen „basic“ und „privileged“ zugewiesen sind, können Sie mit dem Befehl prctl ändern.
Es gibt zwei Kategorien von Aktionen für Resource Control-Werte: global und lokal.
Globale Aktionen gelten für Resource Control-Werte jeder Resource Control in einem System. Mit dem Befehl rctladm, der in der Manpage rctladm(1M) ausführlich beschrieben ist, können Sie:
Den globalen Status von aktiven System-Resource Controls anzeigen
Globale Protokollierungsaktionen einrichten
Die globale Protokollierungsaktion für Resource Controls kann aktiviert oder deaktiviert werden. Weisen Sie der Aktion syslog einen bestimmten Wert zu, um einen Schweregrad zuzuweisen, syslog=Schweregrad. Mögliche Einstellungen für Schweregrad sind:
debug
info
notice
warning
err
crit
alert
emerg
Standardmäßig werden Verletzungen der Resource Controls nicht global protokolliert. Im Solaris-Release 10 5/08 wurde für Resource Controls, für die keine globalen Aktionen konfiguriert werden können, die Ebene n/a hinzugefügt.
Lokale Aktionen werden für einen Prozess durchgeführt, der versucht, den Resource Control-Wert zu übersteigen. Jedem Schwellenwert, der für eine Resource Control eingerichtet wurde, können eine oder mehrere Aktionen zugewiesen werden. Es gibt drei Arten von lokalen Aktionen: none, deny und signal=. Diese drei Aktionen werden wie folgt verwendet:
Bei Ressourcenanforderungen, die größer sind als der Schwellenwert, wird keine Aktion durchgeführt. Mit dieser Aktion kann die Ressourcennutzung überwacht werden, ohne die Ausführung von Anwendungen zu beeinflussen. Sie können auch eine globale Nachricht aktivieren, die immer dann angezeigt wird, wenn die Resource Control überschritten wird. Der den Schwellenwert überschreitende Prozess wird davon nicht beeinflusst.
Ressourcenanforderungen, die größer sind als der Schwellenwert, werden verweigert. Beispielsweise führt eine Resource Control task.max-lwps mit der Aktion deny dazu, dass ein fork-Systemaufruf fehlschlägt, wenn der neue Prozess den Wert der Resource Control überschreitet. Weitere Informationen finden Sie in der Manpage fork(2).
Sie können die Aktion einer globalen Signalnachricht aktivieren, wenn der Schwellenwert der Resource Control überschritten wird. Beim Überschreiten des Schwellenwerts wird ein Signal an den Prozess gesendet. Wenn der Prozess zusätzliche Ressourcen verbraucht, werden keine zusätzlichen Signale gesendet. Die verfügbaren Signale sind in Tabelle 6-3 aufgeführt.
Nicht alle Aktionen können an jeder Resource Control angewendet werden. Beispielsweise kann ein Prozess nicht die Anzahl der CPU-Shares überschreiten, die dem Projekt zugewiesen sind, bei dem der Prozess Mitglied ist. Aus diesem Grund ist die Aktion „deny“ für die Resource Control project.cpu-shares nicht zulässig.
Aufgrund der Implementierungseinschränkungen können die globalen Eigenschaften einer Resource Control den Bereich an verfügbaren Aktionen einschränken, die für diesen Schwellenwert eingerichtet werden können. (Weitere Informationen finden Sie in der Manpage rctladm(1M) Eine Liste der verfügbaren Signalaktionen finden Sie in der folgenden Tabelle. Weitere Informationen zu Signalen können Sie in der Manpage signal(3HEAD) nachlesen.
Tabelle 6-3 Für Resource Control-Werte verfügbare Signale
|
Jede Resource Control auf einem System verfügt über ein bestimmtes Set zugewiesener Eigenschaften. Dieses Eigenschaftenset ist als eine Reihe von Flags definiert, die allen gesteuerten Instanzen dieser Ressource zugeordnet sind. Globale Flags können nicht bearbeitet werden, aber die Flags können mit rctladm oder dem Systemaufruf getrctl abgerufen werden.
Lokale Flags definieren das Standardverhalten und die Konfiguration eines bestimmten Schwellenwerts der Resource Control für einen bestimmten Prozess oder eine Prozessansammlung. Die lokalen Flags für einen Schwellenwert wirken sich nicht auf das Verhalten anderer definierter Schwellenwerte für die gleiche Resource Control aus. Demgegenüber wirken sich globale Flags auf das Verhalten jedes Werts aus, der einer bestimmten Resource Control zugeordnet ist. Lokale Flags können innerhalb der Einschränkungen durch die entsprechenden globalen Flags mit dem Befehl prctl oder dem Systemaufruf setrctl bearbeitet werden. Lesen Sie dazu setrctl(2).
Eine vollständige Liste der lokalen Flags, globalen Flags und deren Definitionen finden Sie unter rctlblk_set_value(3C).
Um das Systemverhalten beim Erreichen des Schwellenwerts einer bestimmten Resource Control festzulegen, zeigen Sie die globalen Flags der Resource Control an. Dazu verwenden Sie den Befehl rctladm. Um beispielsweise die Werte für die Resource Control process.max-cpu-time anzuzeigen, geben Sie Folgendes ein:
$ rctladm process.max-cpu-time process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ]
Die globalen Flags geben Folgendes an:
Superuser-Berechtigungen sind nicht erforderlich, um privilegierte Werte für diese Resource Control zu senken.
Auch wenn die Schwellenwerte überschritten werden, wird der Zugriff auf diese Resource Control niemals verweigert.
SIGXCPU kann gesendet werden, wenn Schwellenwerte für diese Resource Control erreicht wurden.
Der Zeit-Wert für die Resource Control.
Resource Control-Werte mit dem Zugriffsprivileg basic können nicht eingestellt werden. Es sind nur Resource Control-Werte mit den entsprechenden Zugriffsprivilegien zulässig.
Eine lokale Signalaktion kann nicht an Resource Control-Werten gesetzt werden.
Die globale syslog-Meldungsaktion kann für diese Resource Control nicht gesetzt werden.
Die Ressourcenanforderung immer verweigern, wenn die Grenzwerte überschritten werden.
Ein ganzzahliger Zählwert für die Resource Control.
Größeneinheit für die Resource Control.
Geben Sie den Befehl prctl ein, um die lokalen Werte und Aktionen für die Resource Control anzuzeigen.
$ prctl -n process.max-cpu-time $$ process 353939: -ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none
Das Flag max (RCTL_LOCAL_MAXIMAL) ist für beide Schwellenwerte gesetzt, und das Flag inf (RCTL_GLOBAL_INFINITE) ist für diese Resource Control definiert. Ein inf-Wert hat eine unendliche Menge. Der Wert wird nie durchgesetzt. Daher stellen die konfigurierten Schwellenwerte unendliche Werte dar, die nie überschritten werden.
Für eine Ressource können mehrere Resource Controls vorhanden sein. Eine Resource Control kann auf jeder Inhaltsstufe im Prozessmodell existieren. Wenn Resource Controls für die gleichen Ressourcen auf unterschiedlichen Inhaltsstufen aktiv sind, wird die Resource Control auf der niedrigsten Inhaltsstufe zuerst durchgesetzt. Aus diesem Grund wird die Aktion für process.max-cpu-time vor der Aktion für task.max-cpu-time ausgeführt, wenn beide Resource Controls gleichzeitig durchgesetzt werden.
Abbildung 6-1 Prozess-Collectives, Container-Beziehungen und zugehörige Resource Control-Sets
Häufig ist der Ressourcenverbrauch von Prozessen unbekannt. Um mehr Informationen zu erhalten, können Sie die globalen Resource Control-Aktionen verwenden, die über den Befehl rctladm verfügbar sind. Geben Sie den Befehl rctladm ein, um eine syslog-Aktion für eine Resource Control einzurichten. Wenn dann eine von dieser Resource Control verwaltete Einheit auf einen Schwellenwert trifft, wird eine Systemmeldung auf der konfigurierten Protokollstufe aufgezeichnet. Weitere Informationen finden Sie in Kapitel 7, Verwalten von Resource Controls (Vorgehen) und in der Manpage rctladm(1M).