Systemverwaltungshandbuch: Oracle Solaris Container - Ressourcenverwaltung und Solaris Zones

Kapitel 6 Einführung in die Resource Controls

Nachdem Sie den Ressourcenverbrauch durch Arbeitslasten auf dem System gemäß der Beschreibung in Kapitel 4Einführung in das Extended Accounting ermittelt haben, können Sie Grenzwerte für die Ressourcennutzung einrichten. Grenzwerte verhindern, dass Arbeitslasten Ressourcen übermäßig verbrauchen. Zum Einrichten der Grenzwerte werden Resource Controls verwendet, die als Einschränkung eingesetzt werden.

In diesem Kapitel werden die folgenden Themen behandelt.

Informationen zur Verwaltung von Resource Controls finden Sie in Kapitel 7Verwalten von Resource Controls (Vorgehen).

Neuerungen bei den Resource Controls in Solaris 10

Die folgende Liste der Resource Controls ersetzt die System V Interprocess Communication (IPC)-Tunables /etc/system:

Die folgenden Resource Controls für Ereignis-Ports wurden hinzugefügt:

Die folgende kryptografische Resource Control wurde hinzugefügt:

Die folgenden zusätzlichen Resource Controls wurden hinzugefügt:

Weitere Informationen finden Sie unter Verfügbare Resource Controls.

Eine vollständige Liste der neuen Funktionen in Solaris 10 sowie eine Beschreibung der Solaris-Releases finden Sie in Neuerungen in Oracle Solaris 9 10/10.

Das Konzept von Resource Controls

Im Betriebssystem Solaris wurde das Konzept einer prozessbasierten Ressourceneinschränkung auf die in Kapitel 2Einführung in Projekte und Aufgaben beschriebenen Funktionen Aufgabe und Projekt erweitert. Diese Erweiterungen werden über Resource Controls (rctls) umgesetzt. Darüber hinaus sind Zuweisungen, die über die Tunables /etc/system eingestellt wurden, jetzt automatisiert oder können ebenfalls über Resource Controls konfiguriert werden.

Eine Resource Control ist durch das Präfix zone, project, task oder process gekennzeichnet. Resource Controls können systemweit überwacht werden. Die Werte von Resource Controls können bei laufendem System aktualisiert werden.

Eine Liste der standardmäßigen Resource Controls für dieses Release finden Sie unter Verfügbare Resource Controls. Informationen zu den verfügbaren zonenweiten Resource Controls finden Sie unter Ressourcentypeigenschaften.

Eine Liste der standardmäßigen Resource Controls für dieses Release finden Sie unter Verfügbare Resource Controls.

Maximaler Ressourcenverbrauch und Resource Controls

UNIX-Systeme verfügen traditionell über eine Funktion zur Begrenzung des maximalen Ressourcenverbrauchs (rlimit). Mit „rlimit“ können Administrator einen oder mehrere numerische Grenzwerte für die Ressourcen einrichten, die ein Prozess maximal verbrauchen darf. Diese Grenzwerte enthalten die verwendete CPU-Zeit pro Prozess, die Kerndateigröße pro Prozess und die maximale Heap-Größe pro Prozess. Heap-Größe ist der für das Prozessdatensegment zugewiesene Scratch-Speicher.

Resource Controls bilden u. a. Kompatibilitätsschnittstellen für den maximalen Ressourcenverbrauch. Vorhandene Anwendungen, für die ein maximaler Ressourcenverbrauch festgelegt wurde, laufen unverändert weiter. Diese Anwendungen können auf die gleiche Weise überwacht werden wie Anwendungen, die geändert wurden, um von den Vorteilen der Resource Controls profitieren zu können.

Prozessübergreifende Kommunikation und Resource Controls

Prozesse können über verschiedene Arten von prozessübergreifender Kommunikation (Interprocess Communication, IPC) miteinander kommunizieren. IPC ermöglicht die Übertragung oder Synchronisierung von Informationen zwischen Prozessen. Vor dem Solaris-Release 10 wurden die einstellbaren IPC-Parameter durch Hinzufügen eines Eintrags zur Datei /etc/system gesetzt. Die Resource Controls umfassen jetzt Funktionen, die das Verhalten der IPC-Funktionen des Kernel definieren. Diese Resource Controls ersetzen die /etc/system-Tunables.

Auf diesem Solaris-System können in der Datei /etc/system veraltete Parameter enthalten sein. In diesem Fall dienen die Parameter zur Initialisierung der Standardwerte für Ressourcenobjekte gemäß den vorigen Solaris-Versionen. Von der Verwendung der veralteten Parameter wird jedoch abgeraten

Um festzustellen, welche IPC-Objekte zur Nutzung durch ein Projekt beitragen, verwenden Sie den Befehl ipcs mit der Option -J. Eine Beispielanzeige finden Sie unter So verwenden Sie ipcs Weitere Informationen zum Befehl ipcs finden Sie unter ipcs(1).

Informationen zur Einstellung eines Solaris-Systems finden Sie im Oracle Solaris Tunable Parameters Reference Manual .

Einschränkungsmechanismen der Resource Controls

Resource Controls bieten einen Mechanismus zur Einschränkung der Systemressourcen. Mit diesem Mechanismus kann verhindert werden, dass Prozesse, Aufgaben, Projekte und Zonen bestimmte angegebene Systemressourcen verbrauchen. Das System lässt sich besser verwalten, da übermäßiger Ressourcenverbrauch verhindert wird.

Die Einschränkungsmechanismen können auch in Prozessen zur Kapazitätsplanung verwendet werden. Wenn eine Anwendung auf eine Einschränkung trifft, kann diese auch Informationen zu den Ressourcenanforderungen der Anwendung liefern, ohne dass diese Ressourcen unbedingt verweigert werden.

Projektattribute

Resource Controls können auch als einfache Attribute für die Ressourcenverwaltung verwendet werden. Beispielsweise wird die Anzahl der CPU-Shares, die einem Projekt in der Scheduling-Klasse Fair Share Scheduler (FSS) zur Verfügung stehen, von der Resource Control project.cpu-shares definiert. Da dem Projekt von der Resource Control eine feste Anzahl an Shares zugewiesen wird, werden die Aktionen, die dem Überschreiten der Resource Control zugeordnet sind, nicht angewendet. In diesem Zusammenhang wird der aktuelle Wert für die Resource Control project.cpu-shares als Attribut für das angegebene Projekt betrachtet.

Ein anderer Projektattributtyp dient zum Begrenzen des Speicherressourcenverbrauchs durch Prozesse, die an ein Projekt angehängt sind. Dieser Attribute haben das Präfix rcap, z. B. rcap.max-rss. Dieser Attributtyp wird wie eine Resource Control in der project-Datenbank konfiguriert. Während Resource Controls synchron vom Kernel durchgesetzt werden, werden Resource Caps (Speicherbegrenzungen) asynchron auf Benutzerebene über den Resource Capping Daemon rcapd durchgesetzt. Weitere Informationen zum rcapd finden Sie in Kapitel 10Einführung in die Steuerung des reellen Arbeitsspeichers mithilfe des Resource Capping Daemons und in der Manpage rcapd(1M).

Mit dem Attribut project.pool wird eine Pool-Bindung eines Projekt angegeben. Weitere Informationen zu Resource Pools finden Sie in Kapitel 12Einführung in Resource Pools.

Konfigurieren von Resource Controls und Attributen

Resource Controls werden über die project-Datenbank konfiguriert. Lesen Sie dazu Kapitel 2Einfü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.


Verfügbare Resource Controls

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:

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

Name der Resource Control 

Beschreibung 

Standardeinheit 

project.cpu-cap

Solaris 10 8/07: Absoluter Grenzwert der CPU-Ressourcen, die von einem Projekt beansprucht werden können. Der Wert 100 bedeutet 100-prozentige Beanspruchung einer CPU als project.cpu-cap-Einstellung. Der Wert 125 bedeutet 125 Prozent, da 100% der vollständigen Beanspruchung einer CPU auf einem System mit eingestellten Ressourcengrenzwerten entspricht.

Menge (CPU-Anzahl) 

project.cpu-shares

Anzahl der CPU-Shares, die diesem Projekt zur Nutzung mit dem Fair Share Scheduler zugeteilt sind (lesen Sie dazu auch die Manpage FSS(7)).

Menge (Shares) 

project.max-crypto-memory

Gesamter Kernel-Speicher, der von libpkcs11 für die Hardware-Crypto-Beschleunigung verwendet werden kann. Zuweisungen für Kernel-Puffer und sitzungsbezogene Strukturen werden gegen diese Resource Control verrechnet.

Größe (Byte) 

project.max-locked-memory

Gesamtmenge des zulässigen physikalisch gesperrten Speichers. 

Wenn priv_proc_lock_memory einem Benutzer zugewiesen ist, sollten Sie eventuell auch diese Resource Control einstellen, um zu verhindern, dass der Benutzer den gesamten Speicher sperrt.

Solaris 10 8/07: Diese Resource Control ersetzt ab dem Solaris-Release 10 8/07 die Resource Control project.max-device-locked-memory.

Größe (Byte) 

project.max-port-ids

Maximal zulässige Anzahl der Ereignis-Ports. 

Menge (Anzahl der Ereignis-Ports)  

project.max-sem-ids

Höchstzahl der für dieses Projekt zulässigen Semaphor-IDs. 

Menge (Semaphor-IDs) 

project.max-shm-ids

Höchstzahl der für dieses Projekt zulässigen Shared Memory-IDs. 

Menge (Shared Memory-IDs) 

project.max-msg-ids

Höchstzahl der für dieses Projekt zulässigen Nachrichtenwartesch- langen-IDs. 

Menge (Nachrichtenwarteschlangen-IDs) 

project.max-shm-memory

Gesamtmenge des für dieses Projekt System V Shared Memory. 

Größe (Byte) 

project.max-lwps

Höchstzahl der gleichzeitig für dieses Projekt verfügbaren LWPs. 

Menge (LWPs) 

project.max-tasks

Höchstzahl der für dieses Projekt zulässigen Aufgaben. 

Menge (Anzahl der Aufgaben) 

project.max-contracts

Höchstzahl der für dieses Projekt zulässigen Contracts. 

Menge (Contracts) 

task.max-cpu-time

Maximale CPU-Zeit, die für die Prozesse dieser Aufgabe verfügbar ist. 

Zeit (Sekunden) 

task.max-lwps

Höchstzahl der LWPs, die gleichzeitig für die Prozesse dieser Aufgabe zur Verfügung stehen. 

Menge (LWPs) 

process.max-cpu-time

Maximale CPU-Zeit, die für diesen Prozess zur Verfügung steht. 

Zeit (Sekunden) 

process.max-file-descriptor

Maximaler Dateideskriptorindex, der für diesen Prozess zur Verfügung steht. 

Index (maximaler Dateideskriptor) 

process.max-file-size

Maximaler Datei-Offset, der für das Schreiben durch diesen Prozess zur Verfügung steht. 

Größe (Byte) 

process.max-core-size

Maximale Größe einer Kerndatei, die von diesem Prozess erstellt wird. 

Größe (Byte) 

process.max-data-size

Maximaler Heap-Speicher, der für diesen Prozess zur Verfügung steht. 

Größe (Byte) 

process.max-stack-size

Maximales Stack-Speichersegment, das für diesen Prozess zur Verfügung steht. 

Größe (Byte) 

process.max-address-space

Maximale Größe des Adressraums, als Summe der Segmentgrößen, der für diesen Prozess zur Verfügung steht. 

Größe (Byte) 

process.max-port-events

Maximal zulässige Anzahl der Ereignisse pro Ereignis-Ports. 

Menge (Anzahl der Ereignisse)  

process.max-sem-nsems

Maximal zulässige Anzahl der Semaphoren pro Semaphoren-Set. 

Menge (Semaphoren pro Set) 

process.max-sem-ops

Maximal zulässige Anzahl an Semaphor-Vorgängen pro semop-Aufruf (der Wert wird zur semget()-Zeit von der Resource Control kopiert).

Menge (Anzahl der Vorgänge) 

process.max-msg-qbytes

Höchstzahl der Byte pro Nachricht in einer Nachrichtenwarteschlange (der Wert wird zur msgget()-Zeit von der Resource Control kopiert).

Größe (Byte) 

process.max-msg-messages

Höchstzahl der Nachrichten in einer Nachrichtenwarteschlange (der Wert wird zur msgget()-Zeit von der Resource Control kopiert).

Menge (Anzahl der Nachrichten) 

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

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

Name der Resource Control 

Beschreibung 

Standardeinheit 

zone.cpu-cap

Solaris 10 5/08: Absoluter Grenzwert der CPU-Ressourcen, die von einer nicht-globalen Zone beansprucht werden können. Der Wert 100 bedeutet 100-prozentige Beanspruchung einer CPU als project.cpu-cap-Einstellung. Der Wert 125 bedeutet 125 Prozent, da 100% der vollständigen Beanspruchung einer CPU auf einem System mit eingestellten Ressourcengrenzwerten entspricht.

Menge (CPU-Anzahl) 

zone.cpu-shares

Anzahl der Fair Share Scheduler (FSS) CPU-Shares für diese Zone 

Menge (Shares) 

zone.max-locked-memory

Gesamtmenge des in einer Zone verfügbaren, physikalisch gesperrten Speichers. 

Wenn priv_proc_lock_memory einer Zone zugewiesen ist, können Sie auch diese Resource Control einstellen, um zu verhindern, dass die Zone den gesamten Speicher sperrt.

Größe (Byte) 

zone.max-lwps

Höchstzahl der gleichzeitig in dieser Zone verfügbaren LWPs. 

Menge (LWPs) 

zone.max-msg-ids

Höchstzahl der für diese Zone zulässigen Nachrichtenwartesch- langen-IDs. 

Menge (Nachrichten- warteschlan- gen-IDs) 

zone.max-sem-ids

Höchstzahl der für diese Zone zulässigen Semaphor-IDs. 

Menge (Semaphor- IDs) 

zone.max-shm-ids

Höchstzahl der für diese Zone zulässigen Shared Memory-IDs. 

Menge (Shared Memory-IDs) 

zone.max-shm-memory

Gesamtmenge des für diese Zone zulässigen System V Shared Memory. 

Größe (Byte) 

zone.max-swap

Gesamtmenge des Swap-Bereichs, der von Benutzerprozess- Adressraumzuordnungen und tmpfs-Mounts für diese Zone verwendet wird.

Größe (Byte) 

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 übernehmen Sie eine lx Branded Zone nachlesen.

Eine zonenweite Resource Control kann auch auf die globale Zone angewendet werden. Weitere Informationen finden Sie in Kapitel 17Einführung in die Konfiguration einer nicht-globalen Zone und unter Verwenden des Fair Share Scheduler auf einem Solaris-System mit installierten Zonen.

Unterstützung von Einheiten

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 folgenden globalen Flags sind verfügbar:

Globales Flag 

Zeichenfolge für den Resource Control-Typ 

Modifikator 

Skalierung 

RCTL_GLOBAL_BYTES 

Byte 

 

KB 

210

 

MB 

220

 

GB 

230

 

TB 

240

 

PB 

250

 

EB 

260

RCTL_GLOBAL_SECONDS 

Sekunden 

 

Ks 

103

 

Ms 

106

 

Gs 

109

 

Ts 

1012

 

Ps 

1015

 

Es 

1018

RCTL_GLOBAL_COUNT 

count 

none 

 

103

 

106

 

109

 

1012

 

1015

 

1018

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.


Resource Control-Werte und Berechtigungsstufen

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.

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.

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

Flags und Eigenschaften von Resource Controls

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:

lowerable

Superuser-Berechtigungen sind nicht erforderlich, um privilegierte Werte für diese Resource Control zu senken.

no-deny

Auch wenn die Schwellenwerte überschritten werden, wird der Zugriff auf diese Resource Control niemals verweigert.

cpu-time

SIGXCPU kann gesendet werden, wenn Schwellenwerte für diese Resource Control erreicht wurden.

seconds

Der Zeit-Wert für die Resource Control.

no-basic

Resource Control-Werte mit dem Zugriffsprivileg basic können nicht eingestellt werden. Es sind nur Resource Control-Werte mit den entsprechenden Zugriffsprivilegien zulässig.

no-signal

Eine lokale Signalaktion kann nicht an Resource Control-Werten gesetzt werden.

no-syslog

Die globale syslog-Meldungsaktion kann für diese Resource Control nicht gesetzt werden.

deny

Die Ressourcenanforderung immer verweigern, wenn die Grenzwerte überschritten werden.

Zählung

Ein ganzzahliger Zählwert für die Resource Control.

bytes

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.

Durchsetzung von Resource Controls

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

Das Diagramm zeigt die Durchsetzung von Resource Controls auf den jeweiligen Inhaltsstufen.

Globale Überwachung auf Resource Control-Ereignisse

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 7Verwalten von Resource Controls (Vorgehen) und in der Manpage rctladm(1M).

Anwenden von Resource Controls

Jede in Tabelle 6–1 aufgeführte Resource Control kann einem Projekt entweder bei der Anmeldung zugewiesen werden, oder wenn newtask, su oder andere projektbezogene Startprogramme wie at, batch oder cron aufgerufen werden. Jeder initiierte Befehl wird in einer separaten Aufgabe mit dem Standardprojekt des aufrufenden Benutzers gestattet. Weitere Informationen finden Sie in den Manpages login(1), newtask(1), at(1), cron(1M) und su(1M).

Aktualisierungen der Einträge in der project-Datenbank, ob an der Datei /etc/project oder an einer Darstellung der Datenbank in einem Netzwerk-Namen-Service werden nicht an den derzeit aktiven Projekten angewendet. Die Aktualisierungen werden angewendet, wenn eine neue Aufgabe über eine Anmeldung oder newtask zum Projekt hinzugefügt wird.

Vorübergehendes Aktualisieren der Resource Control-Werte bei laufendem System

In der project-Datenbank geänderte Werte gelten nur für neue Aufgaben, die in einem Projekt gestartet werden. Sie können jedoch in die Befehle rctladm und prctl verwenden, um die Resource Controls bei laufendem System zu aktualisieren.

Aktualisieren des Protokollierungsstatus

Der Befehl rctladm wirkt sich systemweit auf den globalen Protokollierungsstatus jeder Resource Control aus. Mit diesem Befehl können Sie den globalen Status anzeigen und die Stufe der syslog-Protokollierung einstellen, wenn Resource Controls überschritten werden.

Aktualisieren von Resource Controls

Mit dem Befehl prctl können Sie die Werte und Aktionen von Resource Controls auf Prozess-, Aufgaben- oder Projektbasis anzeigen oder vorübergehend ändern. Als Eingabe wird eine Projekt-, Aufgaben- oder Prozess-ID verwendet. Der Befehl arbeitet auf der Stufe mit der Resource Control, auf der sie definiert ist.

Alle Änderungen an Werten und Aktionen werden unmittelbar übernommen. Diese Änderungen gelten jedoch nur für den aktuellen Prozess, die aktuelle Aufgabe oder das aktuelle Projekt. Die Änderungen werden nicht in der project-Datenbank aufgezeichnet. Wird das System neu gestartet, gehen die Änderungen verloren. Permanente Änderungen an Resource Controls müssen in der project-Datenbank vorgenommen werden.

Alle Einstellungen für Resource Controls, die in der project-Datenbank geändert werden können, können auch mit dem Befehl prctl geändert werden. Es können sowohl allgemeine als auch privilegierte Werte hinzugefügt oder gelöscht werden. Auch deren Aktionen können geändert werden. Standardmäßig wird der Typ „basic“ für alle Vorgänge angewendet, Prozesse und Benutzer mit Superuser-Berechtigungen können jedoch auch „privileged“ Resource Controls ändern. System-Resource Controls können nicht geändert werden.

Mit Resource Controls verwendete Befehle

In der folgenden Tabelle sind die Befehle aufgeführt, die mit Resource Controls verwendet werden können.

Befehl 

Beschreibung 

ipcs(1)

Ermöglicht das Überwachen, welche IPC-Objekte zur Nutzung durch ein Projekt beitragen 

prctl(1)

Ermöglicht das Erstellen von Echtzeitabfragen und Modifikationen an Resource Controls mit lokalem Geltungsbereich 

rctladm(1M)

Ermöglicht das Erstellen von Echtzeitabfragen und Modifikationen an Resource Controls mit globalem Geltungsbereich 

In der Manpage resource_controls(5) finden Sie Beschreibungen der Resource Controls, die über die Projektdatenbank zur Verfügung stehen, einschließlich Einheiten und Skalierungsfaktoren.