# Kapitel 3. Kpm Hauptfenster

# 3.1. Erläuterungen zu den Feldern

Die Felder, die in der Prozessliste angezeigt werden, können unter dem Menüeintrag "Ansicht"-"Felder auswählen..." ausgewäht werden.

PID - Prozess ID

  Jedem Prozess wird eine eigene Prozess-ID-Nummer zugeordnet. Diese Nummer ist 1 oder größer. Wird ein neuer Prozess gestartet, so erhält dieser die nächst höhere, unbenutzte PID-Nummer. PID-Nummern sind (momentan) "16bit signed" Integer-Werte und haben einen Wert von 0 bis 32767. Dies als Information für technisch Interessierte.

PPID - "Parent"-Prozess ID

  Jeder Prozess wird einem übergeordneten Prozess, dem Eltern- oder "Parent"-Prozess zugeordnet. Die einzige Ausnahme ist hierbei der allererste Prozess "init" mit der PID-Nummer 1. Dieser Prozess stellt quasi die Wurzel des Prozessbaumes dar und besitzt daher keinen "Parent"-Prozess.

PGID - Prozess-Gruppen ID

  Jeder Prozess gehört zu einer Gruppe von Prozessen. Diese Gruppen werden für die Verteilung von Prozesssignalen verwendet. Sie werden ebenfalls von Terminals eingesetzt, um über ihre Eingabeaufforderungen zu entscheiden. Prozesse, die derselben Prozessgruppe angehören, dem auch das Terminal zugeordnet ist, befinden sich im Vordergrund und besitzen somit das Recht, Lesezugriffe zu tätigen. Prozesse, die einer anderen Gruppe angehören, werden blockiert und erzeugen ein Signal, falls sie dennoch versuchen, einen Lesezugriff zu unternehmen.

SID - Sitzungs-ID

  Sitzungs-IDs werden hauptsächlich eingesetzt, um herauszufinden, was bei einem Absturz des Terminals geschehen ist.

TTY - Kontrolle des tty

  Der aktive Terminal (tty) ist üblicherweise die Schnittstelle (seriell, pty, etc.), von der aus Prozesse gestartet werden. Dieses Terminal wird gleichzeitig für Ein- und Ausgaben verwendet. Kpm durchsucht das /dev Verzeichnis, um den Namen des Terminals herauszufinden. Es sind jedoch nicht alle Prozesse einem aktiven Terminal zugeordnet. Daher kann diese Suche erfolglos verlaufen. Um Platz zu sparen, werden nur die letzten beiden Zeichen des tty-Namens angezeigt. Der Terminal /dev/ttyp6 wird beispielsweise als "p6" angezeigt.

TPGID - Prozess-Gruppen ID des tty-Prozesses

  Ein Terminal tty, das gerade benutzt wird, ist immer einem Prozess zugeordnet. Die Prozess-Gruppen ID dieses Prozesses wird unter TPGID angezeigt.

USER - Prozess-Benutzer

  Hierbei handelt es sich um den (wirklichen) Benutzer, der den jeweiligen Prozess gestartet hat. Falls die tatsächliche Benutzer-ID eines Prozesses sich von der wirklichen Benutzer-ID unterscheidet, wird dies von Kpm durch ein angehängtes * oder + gekennzeichnet. Der Stern wird angegeben, wenn der tatsächliche Benutzer der Super-User ist (genaugenommen zeigt es an, dass die "set-uid" des Programms auf "root" eingestellt ist).

NICE - Der Prozessprioritätswert "nice"

  Der "nice"-Wert bestimmt, wie häufig und wie lange ein Prozess jeweils laufen darf. Der Wert selber liegt zwischen -20 und +20, wobei 0 den Standardwert darstellt. Niedrige Zahlen weisen einem Prozess mehr Prozessorzeit zu. Das Herabsetzen von "nice"-Werten ist ausschließlich dem Super-User vorbehalten.

PRI - Länge des nächsten Prozessor-Zeitintervalls

  Dies ist die maximale Lönge des kommenden Zeitintervalls, die einem Prozess an Prozessorzeit zugewiesen werden kann (oder die maximale Restzeit des laufenden Zeitintervalls, falls der Prozess zur Zeit bearbeitet wird). Die Zahl entspricht einem Wert innerhalb einer Skala von -20 bis +20, wobei kleine Zahlen einem längeren Zeitintervall entsprechen.

PLCY - Prozess-Ablaufplan ("Scheduling policy")

  FIFO (F) und "Round-Robin" (R) sind Echtzeit-Ablaufpläne; "OTHER" (O) ist der bei UNIX übliche Ablaufplan zur Verteilung der CPU-Zeit. F- und R-Prozesse haben eine Echtzeitpriorität zwischen 1 und 99. Nachdem "Round-Robin" Prozesse für die Dauer einer Zeitscheibe ("time-slice") gelaufen sind, werden sie auf die letzte Position innerhalb der Warteschlange ihres Prioritätslevels gesetzt. FIFO Prozesse laufen solange, bis sie die ihnen zugeteilte Prozessorzeit aufgeben (durch das Versetzen in den Ruhezustand oder durch Blockierung) oder durch einen Prozess mit einem höheren Prioritätslevel an der weiteren Bearbeitung gehindert werden. Nur der Super-User (root) darf den Ablaufplan ("scheduling policy") verändern.

RPRI - Echtzeit-Prioritätsstufen

  Echtzeit-Prozesse (FIFO und "Round-Robin") werden Prioritätswerte zwischen 1 und 99 zugeordnet. Ein Prozess mit einer höheren Prioritätsstufe als ein anderer wird bei der Zuteilung der CPU-Zeit bevorzugt. Normale Prozesse, die CPU-Zeit mit anderen Prozessen teilen ("policy"-Wert 0) besitzen alle den Prioritätslevel 0. Nur der Super-User (root) darf die Echtzeit-Prioritätsstufen ändern.

MAJFLT - Anzahl der aufgetretenen schwerwiegenden Fehler ("major faults")

  Ein Seitenfehler ("page fault") tritt auf, wenn ein Prozess versucht, entweder lesend oder schreibend auf eine Speicherseite zuzugreifen, die sich nicht im RAM befindet. Es handelt sich um einen schwerwiegenden Seitenfehler, wenn ein Zugriff auf die Festplatte benötigt wird, z.B. für Auslagerungen oder das Einlesen von Speicherseiten.

MINFLT - Anzahl der aufgetretenen leichten Fehler ("minor faults")

  Ein Seitenfehler ("page fault") tritt auf, wenn ein Prozess versucht, entweder lesend oder schreibend auf eine Speicherseite zuzugreifen, die sich nicht im RAM befindet oder versucht, auf eine Seite zu schreiben, auf die kein Schreibzugriff möglich ist. Es handelt sich um einen leichten Fehler, wenn hierbei kein Zugriff auf die Festplatte erfolgen muss, z.B. ein Schreibzugriff auf eine mit "copy-on-write" gemeinsam benutzte Seite ("shared page").

TRS - "Text resident set size" (Größe in KBytes)

  Hierbei handelt es sich um die Größe des Prozesstextes (der ausführbare Programmcode), der momentan im RAM geladen ist.

DRS - "Data resident set size" (Größe in KBytes)

  Hierbei handelt es sich um die Größe der Prozessdaten (nicht ausführbarer Programmcode), der momentan im RAM geladen ist.

SIZE - Virtuelle Grösse des Prozesses (KBytes)

  Dies ist die Gesamtgröße des Prozesses. Dazu gehören der gesamte Prozesscode, die Daten und die gemeinsam genutzten Bibliotheken ("shared libraries") einschließlich der Seiten, die ausgelagert sind.

SWAP - Umfang der Auslagerung (in KBytes)

  Dies ist die Differenz zwischen "SIZE" und "RSS". Mit anderen Worten sagt dieser Wert, in welchem Umfang Teile des Prozesses auf die Festplatte ausgelagert wurden.

RSS - "resident set size" (Größe in KBytes)

  Hierbei handelt es sich um die Größe des Prozessteils (Code, Daten und die gemeinsam genutzte Bibliotheken), der sich tatsächlich im RAM befindet. Man erhält eine gute Abschätzung der RAM-Menge, die ein Prozess verwendet.

SHARE - Gemeinsam genutzter Speicher (Größe in KBytes)

  Dieser Wert gibt die Speichermenge an, die ein Prozess sich mit anderen Prozessen teilt oder teilen könnte. Dabei sagt dies nicht aus, dass von dieser Speichermenge auch tatsächlich irgendein Teil von anderen Prozessen verwendet wird. Der Wert gibt lediglich an, wieviel Speicher mit anderen Prozessen geteilt werden kann.

DT - Anzahl an "dirty pages"

  Hierbei ist die Anzahl (nicht die Anzahl Bytes!) an RAM-Seiten gemeint, die seit dem letzten Zugriff auf die Festplatte verändert wurden. "Dirty pages" müssen zuerst auf die Festplatte geschrieben werden, bevor sie wieder für andere Dinge freigegeben werden können.

STAT - Zustand eines Prozesses

  Ein Prozess befindet sich immer in einem der folgenden Zustände:

  - R (running): Der Prozess läuft gerade auf der CPU oder ist bereit für die Ausführung

  - S (sleeping): Der Prozess wartet auf ein Ereignis (etwa auf eine Ein-/Ausgabe oder auf den Zeitgeber)

  - D (uninterruptable sleep): Der Prozess wartet auf ein Ereignis, ohne dass er hierbei unterbrochen werden kann (z.B. der Wartezustand eines Schnittstellentreibers)

  - T (stopped): Der Prozess wurde beendet oder durch einen anderen Prozess verfolgt ("traced")

  - Z (zombie): Der Prozess wurde beendet, ohne dass der übergeordnete "parent"-Prozess hiervon bislang Kenntnis genommen hat.

  - Falls ein Prozess komplett auf die Festplatte ausgelagert wurde (keine im Speicher befindlichen Seiten besitzt), so wird ein "W" in dem Feld angezeigt. Dies erfolgt auch bei Kernel-Prozessen, z.B. Kswapd.

FLAGS - Prozess-Kennzeichner ("flags", hex)

  Die folgende Liste enthält einige zusätzliche Informationen über den Zustand eines Prozesses. Bitte sehen Sie im Programmcode des Linux Kernels für weiterführende Details nach.

WCHAN - Funktion, in der ein Prozess ruht

  Wenn ein Prozess auf ein Ereignis wartet, dann befindet er sich in dieser Kernel-Funktion (Um den Namen abzukürzen sind die Präfixe "do_" oder "sys_" entfernt).

UID - Numerische Benutzer-ID

  Dies ist die ID des (wirklichen) Benutzers, dem der Prozess gehört.

%WCPU - Durchschnittliche, prozentuale CPU-Last

  Hierbei handelt es sich um den über die letzten 30 Sekunden gemittelten Prozentsatz der CPU-Zeit, die ein Prozess verwendet (exponentiell abnehmender Durchschnitt).

%CPU - prozentuale CPU-Last seit der letzten Aktualisierung

  Dieser Wert gibt an, wieviel CPU-Zeit (in Prozenten) ein Prozess seit der letzten Aktualisierung der Prozessliste verwendet hat.

%MEM - Prozentsatz des benutzten Speichers

  Dies gibt an, welcher prozentuale Anteil des gesamten RAM-Speichers von einem Prozess verwendet wird (als "resident size"). Da gemeinsam genutzte Bibliotheken ebenfalls zu der Berechnung hinzugezählt werden, handelt es sich möglicherweise um einen zu hohen Wert.

START - Anfangszeit des Prozesses

  Dieser Wert gibt an, wann der Prozess erzeugt wurde.

TIME - verwendete Gesamt-CPU-Zeit

  Dies gibt an, wieviel CPU-Zeit ein Prozess seit seinem Aufruf gebraucht hat.

COMM - Befehl, der den Prozess aufgerufen hat

  In diesem Feld wird der Befehl (Dateiname) angezeigt, der den Prozess erzeugt hat. Zu lange Namen werden abgeschnitten.

CMDLINE - Befehlszeile, die den Prozess aufgerufen hat

  Dies ist die Befehlszeile inklusive eventueller Argumente, mit der ein Prozess erzeugt wurde. Falls im Menü "Einstellungen" der Punkt "Befehlspfad anzeigen" nicht ausgewählt wurde, so wird der Name des Befehls abgeschnitten. Ausgelagerte Prozesse werden mitunter nur durch den in Klammern gesetzten Befehlsnamen aufgeführt (dies gilt auch für Kernel-Prozesse).