Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getrusage(2) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sar(1M)

read(2)

times(2)

wait(2)

write(2)

getpagesize(3)

gettimeofday(3C)

resource(5)

getrusage(2)                                                   getrusage(2)

NAME
     getrusage - Informationen über die Verwendung von Ressourcen aufrufen

SYNTAX
     #include <sys/time.h>
     #include <sys/resource.h>

     getrusage(ine who, struct rusage *rusage);

BESCHREIBUNG
     getrusage gibt Informationen über die vom aktuellen Prozeß verwendeten
     Ressourcen oder seiner beendeten Kindprozesse zurück. Die Interpreta-
     tion für einige angezeigte Werte, wie beispielsweise ruidrss, hängen
     vom Tick-Intervall der Systemuhr ab. Dieses Intervall ist ein von der
     Implementierung abhängiger Wert.

     Der Parameter who ist entweder RUSAGESELF oder RUSAGECHILDREN. Der
     Puffer, auf den rusage verweist, wird mit der folgenden Struktur auf-
     gefüllt:

     struct     rusage {
          struct timeval ruutime;    /* user time used */
          struct timeval rustime;    /* system time used */
          int     rumaxrss;      /* maximum resident set size */
          int     ruixrss;       /* currently 0 */
          int     ruidrss;       /* integral resident set size */
          int     ruisrss;       /* currently 0 */
          int     ruminflt;      /* page faults not requiring physical I/O */
          int     rumajflt;      /* page faults requiring physical I/O */
          int     runswap;       /* swaps */
          int     ruinblock;     /* block input operations */
          int     ruoublock;     /* block output operations */
          int     rumsgsnd;      /* messages sent */
          int     rumsgrcv;      /* messages received */
          int     runsignals;    /* signals received */
          int     runvcsw;       /* voluntary context switches */
          int     runivcsw;      /* involuntary context switches */
     };

     Die Felder werden folgendermaßen interpretiert:

     ruutime       Die Gesamtzeit, in der die Ausführung im Benutzermodus
                    stattfindet. Die Zeitdauer wird in Sekunden und Mikro-
                    sekunden angegeben.

     rustime       Die Gesamtzeit, in der die Ausführung im Systemmodus
                    stattfindet. Die Zeitdauer wird in Sekunden und Mikro-
                    sekunden angegeben.







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getrusage(2)                                                   getrusage(2)

     rumaxrss      Die maximale resident eingestellte Größe. Die Größe
                    wird in Seiten angegeben (die Größe einer Seite, in
                    Byte, wird vom Systemaufruf getpagesize(3) angegeben).
                    Siehe auch HINWEISE.

     ruixrss       Gibt momentan 0 zurück.

     ruidrss       Ein "Integralwert", der die Größe des von einem Prozeß
                    während der Ausführung verwendeten Speichers angibt.
                    Dieser Wert ist die Summe der resident eingestellten
                    Größen des Prozesses bei einem Ticks der Systemuhr. Der
                    Wert wird in Seiten mal Ticks der Systemuhr angegeben.
                    Hinweis: Die gemeinsame Nutzung bleibt hierbei unbe-
                    rücksichtigt. Siehe auch HINWEISE.

     ruisrss       Gibt momentan 0 zurück.

     ruminflt      Die Anzahl der bearbeiteten Seitenfehler, für die keine
                    physische E/A-Aktivität erforderlich war. Siehe auch
                    HINWEISE.

     rumajflt      Die Anzahl der bearbeiteten Seitenfehler, für die eine
                    physische E/A-Aktivität erforderlich war. Dies kann
                    auch ein Vorauslesen der Seiten durch den Kern beinhal-
                    ten. Siehe auch HINWEISE.

     runswap       Die Anzahl der Auslagerungen eines Prozesses aus dem
                    Hauptspeicher.

     ruinblock     Die Anzahl der Eingaben des Dateisystems beim Bearbei-
                    ten einer Anforderung read(2).

     ruoublock     Die Anzahl der Ausgaben des Dateisystems beim Bearbei-
                    ten einer Anforderung write(2).

     rumsgsnd      Die Anzahl der über Sockets gesendeten Meldungen.

     rumsgrcv      Die Anzahl der über Sockets empfangenen Meldungen.

     runsignals    Die Anzahl der gesendeten Signale.

     runvcsw       Die Anzahl der Kontextumschaltungen aufgrund eines Pro-
                    zesses, der den Prozessor freiwillig freigibt, bevor
                    seine Zeitscheibe beendet wurde (normalerweise um die
                    Verfügbarkeit einer Ressource abzuwarten).

     runivcsw      Die Anzahl der Kontextumschaltungen aufgrund eines Pro-
                    zesses höherer Priorität, der nun ausgeführt werden
                    kann, oder aufgrund der Zeitscheibenüberschreitung des
                    aktuellen Prozesses.




Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

getrusage(2)                                                   getrusage(2)

RÜCKGABEWERT
     Ist der Aufruf erfolgreich, wird der Wert mit der entsprechenden
     Struktur aufgefüllt und 0 zurückgegeben. Schlägt der Aufruf fehl, wird
     -1 zurückgegeben.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     getrusage schlägt bei folgenden Bedingungen fehl:

     EINVAL    Der Parameter who ist kein gültiger Wert.

     EFAULT    Die vom Argument rusage angegebene Adresse ist kein gültiger
               Bereich des Adreßbereichs des Prozesses.

HINWEISE
     Die Zahlen ruinblock und ruoublock berücksichtigen nur die reale
     Ein-/Ausgabe und sind bestenfalls ungefähre Werte. Daten, die vom
     Caching-Mechanismus zur Verfügung gestellt werden, werden nur für den
     ersten Prozeß, der Daten liest, und für den letzten Prozeß, der Daten
     schreibt, berechnet.

     Die resident eingestellte Größe wird nur geschätzt und gibt die tat-
     sächliche resident eingestellte Größe möglicherweise nicht exakt wie-
     der.

     Seitenfehler können von verschiedenen Quellen und aus verschiedenen
     Gründen generiert werden. Normalerweise wird ein Seitenfehler durch
     einen direkten Verweis des Programms auf eine Seite erzeugt, die sich
     nicht im Speicher befindet. Doch auch der Kern kann aufgrund von
     Benutzereingaben Seitenfehler verursachen, beispielsweise beim Bear-
     beiten von Systemaufrufen read(2) und write(2). Darüber hinaus kann
     ein Seitenfehler auch von einer fehlenden Hardwareübersetzung in eine
     Seite verursacht werden, obwohl sich die Seiten im physischen Speicher
     befinden.

     Neben festgestellten Hardwareseitenfehlern kann der Kern zum Zweck von
     Aufräumarbeiten Pseudoseitenfehler verursachen. Der Kern kann bei-
     spielsweise auch dann Seitenfehler erzeugen, wenn sich die Seiten im
     physischen Speicher befinden, um Seiten zu sperren, die mit einer
     E/A-Anforderung im Raw-Modus verbunden sind.

     Nach der Definition erfordern schwerwiegende Seitenfehler eine physi-
     sche Ein-/Ausgabe, während unkritische Seitenfehler keine physische
     Ein-/Ausgabe erfordern. Beispielsweise würde die Anforderung der Seite
     von der Freispeicherliste eine Ein-/Ausgabe verhindern und einen
     unkritischen Seitenfehler erzeugen. Unkritische Seitenfehler treten
     jedoch häufiger während des Prozeßstarts als Verweise auf Seiten auf,
     die sich bereits im Speicher befinden. Wenn zum Beispiel ein Adreßbe-
     reich einen Fehler in einem laufenden Programm oder in einer geteilten


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

getrusage(2)                                                   getrusage(2)

     Bibliothek verursacht, werden unkritische Seitenfehler für den Adreß-
     bereich erzeugt. Auch bei den Systemaufrufen read(2) oder write(2) für
     Daten, die sich im Seiten-Cache befinden, wird ein oder mehrere unkri-
     tische Seitenfehler erzeugt.

     Es können keine Informationen über einen Kindprozeß abgerufen werden,
     der noch nicht abgeschlossen ist.

SIEHE AUCH
     sar(1M), read(2), times(2), wait(2), write(2), getpagesize(3),
     gettimeofday(3C), resource(5), systime(5).











































Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026