kra_attachrset Subroutine

Zweck

Ordnet einer Ressourcengruppe eine Arbeitskomponente zu.

Syntax

#include <sys/rset.h>
int kra_attachrset (rstype, rsid, rset, flags)
rstype_t rstype;
rsid_t rsid;
rsethandle_t rset;
unsigned int flags;

Beschreibung

Die Subroutine kra_attachrset ordnet eine Arbeitskomponente, die durch die Parameter RSTTYPE und RSID angegeben wird, einer Ressourcengruppe zu, die durch den Parameter RSet angegeben wird.

Die Arbeitskomponente ist ein vorhandener Prozess mit der Prozess-ID oder ein vorhandener Kernel-Thread mit der Kernel-Thread-ID (tid). Der Wert RS_ICH für die Prozess-ID oder die Thread-ID gibt an, dass die Zuordnung für den aktuellen Prozess bzw. den aktuellen Kernel-Thread gilt.

Die folgenden Bedingungen müssen erfüllt sein, damit ein Prozess erfolgreich einer Ressourcengruppe zugeordnet werden kann:
  • Die Ressourcengruppe muss Prozessoren enthalten, die im System verfügbar sind.
  • Der aufrufende Prozess muss entweder Rootberechtigung haben oder über die Funktion CAP_NUMA_ATTACH verfügen.
  • Der aufrufende Prozess muss entweder Rootberechtigung oder dieselbe effektive Benutzer-ID wie der Zielprozess haben.
  • Der Zielprozess darf keine Threads mit bindprocessor-Bindungen an einen Prozessor enthalten.
  • Die Ressourcengruppe muss in enthalten sein (eine Untergruppe von sein) Die Partitionsressourcengruppe des Zielprozesses.
  • Die Ressourcengruppe muss eine Obermenge aller RSet des Threads im Zielprozess sein.
Die folgenden Bedingungen müssen erfüllt sein, damit ein Kernel-Thread erfolgreich einer Ressourcengruppe zugeordnet werden kann:
  • Die Ressourcengruppe muss Prozessoren enthalten, die im System verfügbar sind.
  • Der aufrufende Prozess muss entweder Rootberechtigung haben oder über die Funktion CAP_NUMA_ATTACH verfügen.
  • Der aufrufende Prozess muss entweder Rootberechtigung oder dieselbe effektive Benutzer-ID wie der Zielprozess haben.
  • Der Zielthread darf keine bindprocessor-Bindungen zu einem Prozessor haben.
  • Die Ressourcengruppe muss in enthalten sein (eine Untergruppe von sein) Der effektive Prozess des Zielthreads und die Partitionsressourcengruppe.

Wenn eine dieser Bedingungen nicht erfüllt ist, schlägt der Anhang fehl.

Sobald ein Prozess einer Ressourcengruppe zugeordnet ist, werden die Threads im Prozess nur auf Prozessoren ausgeführt, die in der Ressourcengruppe enthalten sind. Sobald ein Kernel-Thread einer Ressourcengruppe zugeordnet ist, wird dieser Thread nur auf Prozessoren ausgeführt, die in der Ressourcengruppe enthalten sind.

Mit dem Parameter Flags kann die Richtlinie für die Verwendung der Ressourcen angegeben werden, die in der im Parameter RSet angegebenen Ressourcengruppe enthalten sind. Die einzige unterstützte Planungsrichtlinie ist R_ATTACH_STRSET, die nur nützlich ist, wenn die Prozessoren des Systems im Simultanes Multithreading -Modus ausgeführt werden. Prozessoren wie POWER5 support Simultanes Multithreading, wobei jeder physische Prozessor über zwei Ausführungsengines mit dem Namen Hardware-Threadsverfügt. Jeder Hardware-Thread entspricht im Wesentlichen einer einzelnen CPU und jeder wird als separate CPU in einer Ressourcengruppe identifiziert. Das Flag R_ATTACH_STRSET gibt an, dass der Prozess mit einer Einzelthread-Richtlinie terminiert werden muss, d. h. dass er nur in einem Hardware-Thread pro physischem Prozessor terminiert werden sollte. Wenn dieses Flag angegeben ist, müssen alle verfügbaren Prozessoren, die in der Ressourcengruppe angegeben sind, exklusiv verwendet werden. Eine neue Ressourcengruppe, die als ST-Ressourcengruppebezeichnet wird, wird aus der angegebenen Ressourcengruppe erstellt und dem Prozess gemäß den folgenden Regeln zugeordnet:
  • Alle Offlineprozessoren werden ignoriert.
  • Wenn alle Hardware-Threads (CPUs) eines physischen Prozessors (im Modus Simultanes Multithreading sind mehrere aktive Hardware-Threads pro physischem Prozessor vorhanden) nicht in der angegebenen Ressourcengruppe enthalten sind, werden die anderen CPUs des Prozessors beim Erstellen der ST-Ressourcengruppe ignoriert.
  • Nur eine CPU-Ressource (Hardware-Thread) pro physischem Prozessor ist in der ST-Ressourcengruppe enthalten.

Parameter

Element Beschreibung
RSTYPE Gibt den Typ der Arbeitskomponente an, die der mit dem Parameter RSet angegebenen Ressourcengruppe zugeordnet werden soll. Der Parameter rstype muss der folgende Wert sein, der in rset.hdefiniert ist:
  • R_PROCESS: vorhandener Prozess
  • R_THREAD: vorhandener Kernel-Thread
RSID Gibt die Arbeitskomponente an, die der mit dem Parameter RSet angegebenen Ressourcengruppe zugeordnet werden soll. Für den Parameter RSID muss Folgendes angegeben werden:
  • Prozess-ID (für RSTTYPE von R_PROCESS): Setzen Sie das Feld rsid_t At_PID auf die Prozess-ID des gewünschten Prozesses.
  • Kernel-Thread-ID (für RSTTYPE von R_THREAD): Setzen Sie das Feld rsid_t At_TID auf die Thread-ID des gewünschten Kernel-Threads.
rset Gibt an, welche Arbeitskomponente (angegeben durch die Parameter RSTTYPE und RSID ) der Ressourcengruppe zugeordnet werden soll
Flags

Gibt die Planungsrichtlinie für die Arbeitskomponente an, die zugeordnet wird.

Der einzige unterstützte Wert ist der Wert R_ATTACH_STRSET, der nur gilt, wenn der Parameter RSTTYPE auf R_PROCESS gesetzt ist. Der Wert R_ATTACH_STRSET gibt an, dass der Prozess mit einer Einzelthreadrichtlinie terminiert werden soll (nur auf einem Hardware-Thread pro physischem Prozessor).

Rückgabewerte

Nach erfolgreicher Beendigung gibt die Subroutine kra_attachrset den Wert 0 zurück. Ist dies nicht erfolgreich, trifft mindestens eine der folgenden Bedingungen zu:

Element Beschreibung
EINVAL Eine der folgenden Bedingungen ist aufgetreten:
  • Der Parameter Flags enthält einen ungültigen Wert.
  • Der Parameter RSTTYPE enthält ein ungültiges Typqualifikationsmerkmal.
  • Der Parameter R_ATTACH_STRSET Flags wurde angegeben und mindestens ein Prozessor im Parameter RSet ist nicht zur exklusiven Verwendung zugeordnet.
ENODEW Die mit dem Parameter RSet angegebene Ressourcengruppe enthält keine verfügbaren Prozessoren, oder der Parameter R_ATTACH_STRSET Flags wurde angegeben, und die erstellte ST-Ressourcengruppe enthält keine verfügbaren Prozessoren.
ESRCH Der durch die Parameter RSTTYPE und RSID angegebene Prozess oder Kernel-Thread ist nicht vorhanden.
EPERM Eine der folgenden Bedingungen ist aufgetreten:
  • Wenn RSTTYPE den Wert R_PROCESS hat, ist entweder die durch den Parameter RSet angegebene Ressourcengruppe nicht in der Partitionsressourcengruppe des Prozesses enthalten, der durch die Parameter RSTTYPE und RSID angegeben ist, oder einer der R_THREAD RSet des Threads in diesem Prozess ist keine Untergruppe der durch den Parameter RSet angegebenen Ressourcengruppe.
  • Wenn RSTTYPE den Wert R_THREAD hat, wird die mit dem Parameter RSet angegebene Ressourcengruppe nicht in die effektive Prozessressourcengruppe oder die (reale) Partitionsressourcengruppe des Zielthreads eingeschlossen.
  • Der aufrufende Prozess verfügt weder über Rootberechtigung noch über die Berechtigung CAP_NUMA_ATTACH für Anhänge.
  • Der aufrufende Prozess hat weder Rootberechtigung noch dieselbe effektive Benutzer-ID wie der Prozess, der durch die Parameter RSTTYPE und RSID angegeben wird.
  • Der Prozess oder Thread, der durch die Parameter RSTTYPE und RSID angegeben wird, hat einen oder mehrere Threads mit einer bindprocessor-Prozessorbindung.