Systemverwaltungshandbuch: Oracle Solaris Container - Ressourcenverwaltung und Solaris Zones

Globale und lokale Aktionen mit Resource Control-Werten

Es gibt zwei Kategorien von Aktionen für Resource Control-Werte: global und lokal.

Globale Aktionen mit Resource Control-Werten

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:

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:

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 mit Resource Control-Werten

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:

none

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.

deny

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

signal=

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

Signal 

Beschreibung 

Anmerkung 

SIGABRT 

Beendet den Prozess. 

 

SIGHUP 

Sendet ein „Aufhängen“-Signal. Tritt ein, wenn ein Netzbetreiber eine offene Leitung abwirft. Das Signal wird an die Prozessgruppe gesendet, die das Terminal steuert. 

 

SIGTERM 

Beendet den Prozess. Von der Software gesendetes Beendigungssignal. 

 

SIGKILL 

Beendet den Prozess und bricht das Programm ab. 

 

SIGSTOP 

Stoppt den Prozess. Job-Steuerungssignal. 

 

SIGXRES 

Grenzwert der Resource Control überschritten. Wird von der Resource Control erzeugt. 

 

SIGXFSZ 

Beendet den Prozess. Grenzwert für die Dateigröße überschritten. 

Verfügbar nur für Resource Controls mit der Eigenschaft RCTL_GLOBAL_FILE_SIZE (process.max-file-size). Weitere Informationen finden Sie unter rctlblk_set_value(3C).

SIGXCPU 

Beendet den Prozess. Grenzwert für die CPU-Zeit überschritten. 

Verfügbar nur für Resource Controls mit der Eigenschaft RCTL_GLOBAL_CPUTIME (process.max-cpu-time). Weitere Informationen finden Sie unter rctlblk_set_value(3C).