]>

# Das Kpm Handbuch

Version 1.3k1, 2. Februar 1998

Dieses Handbuch beschreibt die Funktionen des Dienstprogramms Kpm Version 1.3k1. Es dient der Verwaltung von Prozessen und zeigt verschiedene Systeminformationen an.

Deutschsprachiges Handbuch zu Kpm

KDE
Kpm
kdeutils

## Einführung

### Über Kpm

Das Dienstprogramm Kpm zeigt die laufenden Prozesse Ihres Linuxrechners an und erlaubt es, seine Parameter zu verändern. Weiterhin werden genaue Angaben über die laufenden Prozesse und die Systemressourcen angezeigt (z.B. die Auslastung des Speichers, der Auslagerungsdatei, des Prozessors, die Gesamtlaufzeit des Systems, etc.). Prozesse können beendet und ihre Priorität bei der Zuteilung von Prozessorzeit angepasst werden. Sind Sie als Super-User angemeldet, so können Sie zusätzlich Einstellungen des Prozess-Ablaufplans (scheduling) vornehmen.

### Lizenz und Gewährleistung

Kpm beruht weitestgehend auf Mattias Engdegårds Programm `qps`. Der Hauptunterschied zwischen Kpm und qps besteht in der Verwendung der KDE Oberfläche. Kpm ist konform mit den meisten KDE Standards: Einstellungen werden durch KDE-typische Konfigurationsdateien vorgenommen und das Programm besitzt Sitzungsmanagement. Einige Eigenschaften von qps wurden jedoch entfernt, z.B. die Möglichkeit, Arttabellen des Mac OS7 oder besondere Ankreuz-Elemente anzeigen zu lassen.

Qps (und damit auch Kpm) wurden unter der GNU General Public License (GNU GPL) veröffentlicht.

### Voraussetzungen

- Das Betriebssystem Linux mit Kernel Version 2.0 oder höher. Kpm nutzt das `proc` Dateisystem von Linux intensiv. Leider ist dieses System nicht auf andere Betriebssysteme übertragbar, da scheinbar jedes UNIX System einen eigenen Weg geht, um Informationen über Prozesse zu sammeln.

- Das K Desktop Environment 1.0 oder höher.

- Die Programmbibliotheken Qt 1.31 oder höher. Da KDE ohnehin auf Qt basiert, stellt dies kein besonderes Problem dar.

- Ihr Linux Kernel muss mit `Unterstützung für das `proc`-Dateisystem` kompiliert worden sein. Da jedoch viele Programme wie beispielsweise "top" ohne `proc-`Dateisystem nicht funktionsfähig wären, ist sie standardmäßig in den meisten Kerneln enthalten.

## Die Menüeinträge

### Fenster

Minimieren

  Minimiert das Hauptfenster. In diesem Modus benötigt Kpm deutlich weniger Prozessorzeit da die Prozessliste nicht aktualisiert werden muss. Falls Sie KWM als Windowmanager verwenden und die Option "An Kontrolleiste andocken" gwählt haben, sehen Sie ein kleines Symbol in der Kontrolleiste, das die durchschnittliche Systemauslastung darstellt. Bei anderen Windowmanagern wie fvwm zeigt das Symbol von Kpm selbst die Systemauslastung an. Diese Darstellung hängt jedoch davon ab, wie der Windowmanager konfiguriert wurde.

Beenden

  Beendet Kpm (Das Schließen des Hauptfensters führt ebenfalls zum Beenden von Kpm).

### Prozess

Priorität neu festlegen

  Hiermit kann die Priorität eines oder mehrerer ausgewählter Prozesse verändert werden. Unter Linux wird jedem Prozess ein Prioritätslevel (der "nice"-Wert) von -20 (höchste Priorität) bis +20 (geringste Priorität) zugeordnet. Somit führt ein größerer Prioritätslevel dazu, dass ein Prozess weniger Prozessorzeit zugeteilt bekommt. Sie dürfen jedoch nur als Super-User die Prioritätswerte verringern, um die Priorität eines Prozesses zu erhöhen. Das bedeutet, dass Sie als normaler Benutzer die Prozesspriorität nicht erhöhen dürfen - selbst, wenn Sie sie zuvor gesenkt hatten (Beachten Sie, daß die Prozesspriorität erhöt wird, wenn der "nice"-Wert kleiner wird).

  Natürlich haben Sie nur die Möglichkeit, die Priorität ihrer eigenen Prozesse zu verändern. Als Super-User dürfen Sie die Priorität jedes Prozesses modifizieren und somit auch die Priorität heraufsetzen.

Ablaufplan (Scheduling) ändern

  Diese Möglichkeit besitzt nur der Super-User. Mit Hilfe dieses Menüpunktes kann der Super-User den Ablaufplan ausgewählter Prozesse verändern (Dazu werden die Posix.1b Real-Time Erweiterungen des Linux 2.0.x Kernels eingesetzt). Normale Prozesse werden auf den Wert SCHED&lowbar;OTHER gesetzt und erhalten die statische Priorität 0; "soft" Real-Time Prozesse haben den Wert SCHED&lowbar;FIFO oder SCHED&lowbar;RR und eine statische Priorität zwischen 1 und 99.

Socket Information

  Zeigt eine Liste der TCP und UDP Sockets an, die von den ausgewählten Prozessen verwendet werden.

### Signal

Über die einzelnen Menüpunkte des Signal-Menüs können Sie unterschiedliche Signale an alle ausgewählten Prozesse senden. Seien Sie jedoch vorsichtig hierbei - besonders, wenn Sie mehrere Prozesse ausgewählt haben. Eine Erklärung der Standard-Linux-Signale können Sie hier finden.

### Ansicht

Prozeßliste auffrischen

  Dieser Menüpunkt führt zu einer sofortigen Aktualisierung der Prozeßliste. Dies ist besonders hilfreich, wenn Sie lange Zeitintervalle zwischen den automatischen Aktualisierungen ausgewählt haben. Eine sofortige Aktualisierung wird ebenfalls durch Drücken des Aktualisieren-Knopfes in der Werkzeugleiste oder durch das Drücken der Leertaste erreicht.

Alle Prozesse

  Zeigt alle Prozesse an.

Ihre Prozesse

  Zeigt die von Ihnen gestarteten Programme an (inkl. "SETUID" Super-User Programme, die Sie aufgerufen haben).

Nicht-Root Prozesse

  Zeigt alle Prozesse an, ausser denen des Super-Users.

Laufende Prozesse

  Zeigt nur laufende Prozesse an (laufende oder solche, die sich in der Warteschlange für laufende Prozesse befinden).

Benutzer-Felder

  Diese Prozessliste zeigt die interessantesten Prozessfelder an. Es handelt sich hierbei um die Felder, die auch durch das Programm "top" angezeigt werden.

Job-Felder

  Zeigt die wichtigsten Felder für "Job-Control" an.

Speicher-Felder

  Zeigt Informationen über die Auslastung des Speichers, aufgetretene Seitenfehler (page faults) etc.

## Kpm Hauptfenster

### 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&lowbar;" oder "sys&lowbar;" entfernt).

UID - Numerische Benutzer-ID

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

&percnt;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).

&percnt;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.

&percnt;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).

## Anhang

### UNIX Signale

Die folgende Aufzählung der UNIX Signale entspricht denen, die auch in den Handbuchseiten signal(7) erklärt werden. Für nähere Angaben lesen Sie bitte die Handbuchseiten, die Sie mit Hilfe des folgenden Kommandos aufrufen können: `man 7 signal`

Die aufgeführten Signale sind durch Posix definiert und können durch Kpm aufgerufen werden:

- SIGHUP: Entweder wurde durch das aktive Terminal ein Absturz erkannt oder der aktive Prozess wurde unvorhergesehenerweise beendet

- SIGINT: "Unterbrechung", durch die Tastatur aufgerufen

- SIGQUIT: "Beenden", durch die Tastatur aufgerufen

- SIGILL: Unberechtigt aufgerufener Befehl

- SIGABRT: "Abbrechen"-Signal von "abort(3)"

- SIGFPE: Fließkomma-Fehler

- SIGKILL: "Kill"-Signal

- SIGSEG: Ungültige Speicherreferenz

- SIGPIPE: Unterbrechung des Signalflusses: "Broken pipe: write to pipe with no readers"

- SIGALRM: Zeitgebersignal des Alarms (1)

- SIGTERM: Terminationssignal

- SIGUSR1: Benutzer-definiertes Signal 1

- SIGUSR2: Benutzer-definiertes Signal 2

- SIGCHLD: Untergeordneter "Child"-Prozess wurde angehalten oder beendet

- SIGCONT: Fortsetzen, falls angehalten

- SIGSTOP: Prozess anhalten

- SIGTSTP: Aufforderung zum Anhalten wurde am Terminal tty eingegeben

- SIGTTIN: Eingabe für einen Hintergrundprozess vom Terminal tty

- SIGTTOU: Ausgabe für einen Hintergrundprozess vom Terminal tty

Die folgenden Signale sind weder durch Posix definiert noch bislang durch Kpm verfügbar:

- SIGTRAP: "Trace/breakpoint trap" - Die Falle zum Aufspüren oder für Unterbrechungen

- SIGIOT: "IOT trap" Diese Falle ist ein Synonym für SIGABRT

- SIGBUS: Bus-Fehler

- SIGSYS: Ungültiges Argument wurde an die Routine (SVID) übergeben

- SIGSTKFLT: Fehler des Stacks am Koprozessor

- SIGURG: Dringende Bedingung/Situation am Socket (4.2 BSD)

- SIGIO: I/O ist jetzt möglich (4.2 BSD)

- SIGPOLL: Synonym für SIGIO (System V)

- SIGCLD: Synonym für SIGCHLD

- SIGXCPU: Zeitbegrenzung der CPU überschritten (4.2 BSD)

- SIGXFSZ: Größenbegrenzung für die Datei überschritten (4.2 BSD)

- SIGVTALRM: Virtueller Wecker (4.2 BSD)

- SIGPROF: Profil-Wecker

- SIGPWR: Fehler in der Stromversorgung (System V)

- SIGINFO: Synonym für SIGPWR

- SIGLOST: Datei-Sperre verloren

- SIGWINCH: Signal für die Veränderung der Fenstergröße (4.3 BSD, Sun)

- SIGUNUSED: Nicht verwendetes Signal

### Bekannte Fehler und Einschränkungen

- Gelegentlich kommt es vor, dass Kpm mit einem Segmentverletzungsfehler abstürzt. Dies geschieht, wenn mehr als ein Prozess gewählt wurde und die Tabelle aktualisiert wird. Der Grund für diesen Absturz ist bislang nicht bekannt.

- Die Informationszeile und die Prozessliste sind auf eine Zeichensatzgröße von 12 Punkt optimiert worden. Bis zu einer Größe von 14 Punkt sieht die Darstellung gut aus, jedoch wird von der Verwendung größerer Zeichen abgeraten.

- Wenn Sie Kpm so einstellen, dass die Prozessliste häufig aktualisiert wird, so kann das Programm die Belastung der CPU erheblich erhöhen. Beispielsweise wird auf einem Rechner mit einem AMD K6PR200-Prozessor dieser zu ca. 5 Prozent ausgelastet, wenn die Zeitspanne zwischen den Aktualisierungen auf eine Sekunde gestellt wird. Die tatsächliche Belastung hängt jedoch stark von der Anzahl aller Prozesse ab (nicht nur die aufgeführten) und kann mitunter deutlich höher ausfallen.

- Der "&percnt;CPU"-Wert ist bei sehr kurzen Aktualisierungsintervallen nicht präzise.

- Das WCHAN-Feld ist fehlerhaft, falls ein ruhender Prozess sich an einer Stelle ausserhalb der in der Datei `System.map` definierten befindet. In diesen Fällen wird der letzte Eintrag in der Datei `System.map` angezeigt (meistens so etwas wie `&lowbar;end`).

- Kpm kann nicht mehr als einen Prozess mit der gleichen PID verwalten. Dieser Zustand tritt ein, wenn CLONE&lowbar;PID mit dem Systemaufruf "clone()" verwendet wird.