ubuntuusers.deWikischedutils

schedutils

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Inhaltsverzeichnis
  1. Installation
  2. chrt

schedutils {en} ist die Abkürzung für "scheduler utilities". Diese umfassen die drei Konsolen-Programme chrt, taskset und ionice die eine fortgeschrittenen Prozesskontrolle ermöglichen.

Installation

Die Programme chrt, taskset und ionice befinden sich im von Haus aus installiertem Paket util-linux, man muss also nichts installieren um diese Programme benutzen zu können.

chrt

Der Befehl chrt ermöglicht es, die Echtzeit-Priorität von Prozessen zu ändern. Für "normale" Prozesspriorisierung ist nice zuständig.

Priorität

Die Priorität liegt üblicherweise im Bereich bis 99. Letzteres ist die höchste Priorität. Es handelt sich letztlich um negative Werte (und so werden sie auch in Prozesslisten angezeigt), quasi in Fortsetzung der bis -19 reichenden normalen Prioritäten von nice. In chrt werden die Prioritäten aber vorzeichenlos angegeben.

Scheduler

chrt ermöglicht es, den Scheduler eines Prozesses zu ändern. Folgende Scheduler sind möglich:

Scheduler von chrt
OptionBeschreibung
-o Other: der Standardscheduler, für Prozesse ohne Echtzeitanforderung
-f Fifo: eine simple Warteschleife ohne Zeitbegrenzung für die einzelnen Prozesse
-r RoundRobin: Fifo mit Zeitbegrenzung für die einzelnen Prozesse. Der Standard für Realtime-Prozesse

Benutzung

Der Befehl chrt kann einem anderen Kommando vorausgestellt werden, um dieses mit entsprechender Priorität laufen zu lassen.

chrt [Priorität] [Befehl] [Argumente] 

Für chrt sind in der Regel Root-Rechte notwendig. Außerdem ist die Manipulation laufender Prozesse möglich:

sudo chrt [Scheduler] -p [Priorität] [pid] 

Beispiel: Setzen des Prozesses, der bei Verwendung eines Echtzeitkernels für die Behandlung von Interrupt 8 zuständig ist, auf 80, und Umstellung auf den Scheduler "Fifo":

sudo chrt -f -p 80 `pidof "IRQ-8"` 

Auch Auskunft über einen Prozess ist möglich:

sudo chrt -p [pid] 

taskset

Mit taskset ist es möglich, auf Systemen mit mehreren Prozessoren oder Kernen Prozesse gezielt bestimmten Prozessoren/Kernen zuzuweisen. Der Linux-Kernel verteilt die Prozesse zwar auch automatisch auf die vorhandenen Prozessoren, jedoch kann es unter Umständen sinnvoll sein, dies zu beeinflussen.

Nutzung

Die allgemeine Syntax von taskset lautet:

taskset <Option> {Maske} [Befehl | PID] 

wobei Root-Rechte notwendig sind, wenn ein Prozess beeinflusst werden soll. Um den Status eines Prozesses abzufragen sind diese nicht notwendig.

{Maske} gibt dabei an, welcher Prozessor dem Befehl bzw. Prozess zugewiesen werden soll, wobei die Angaben standardmäßig als Hexadezimalzahl erfolgt. Die Zählung der Prozessoren beginnt dabei bei 1 (und nicht bei 0, wie Linux das üblicherweise tut!). D.h. 01 entspricht dem 1. Prozessor, 02 dem zweiten, 03 dem 1.+2. usw.

taskset kennt nur drei Optionen:

Optionen von taskset
OptionBeschreibung
-p ZAHL oder --pid ZAHL PID des zu beeinflussenden Prozesses angeben
-c ZAHL oder --cpu-list ZAHL zu benutzende CPU(s)/Kerne im Listen-Format an- / ausgeben, die CPU-Nummern können durch Kommata getrennt werden
-h kurze Hilfe anzeigen

Im folgenden drei Beispiele für taskset.

Der Befehl

taskset -p 123 

gibt aus, welche CPU(s) vom Prozess mit der PID 123 genutzt werden.

Der Befehl

taskset -p 456 03 

legt fest, dass der Prozess mit der PID 456 den 1. und 2. Prozessor nutzen soll. Die gleiche Funktion erfüllt der Befehl

taskset -p 456 -c 1,2 

Im letzten Beispiel

taskset -c 2 PROGRAMM 

wird "PROGRAMM" gestartet und via taskset angewiesen, dass "PROGRAMM" ausschließlich auf der der 2. CPU laufen soll.

ionice

Mit Hilfe von ionice kann die Priorität eines Prozesses, der das I/O Interface des Kernels nutzt, beeinflusst werden.

Nutzung

Die allgemeine Syntax von ionice lautet:

ionice <Option> [Befehl] 

Wobei je nach Prozess Root-Rechte benötigt werden.

ionice kennt nur vier Optionen:

Optionen von ionice
OptionBeschreibung
-cZAHL Hiermit wird die "scheduling class" festgelegt, also wann der Befehl abgearbeitet werden soll. Es gibt drei "scheduling class":
1 = Real-Time: Der I/O Vorgang wird sofort ausgeführt, dafür werden ggf. sogar andere (laufende) Prozesse abgebrochen; das Verhalten kann im Detail mit der Option -n weiter beeinflusst werden.
2 = Best-Effort: Der I/O Vorgang wird "so bald wie möglich" durchgeführt, basierend auf der niceness der Prozesses. Auch hier kann das Verhalten mit der Option -n im Detail beeinflusst werden.
3= Idle: Der I/O Vorgang wird nur ausgeführt, wenn kein anderer Prozess I/O Zeit benötigt.
-nZAHL Dient zur detaillierten Einstellung von -c1 und -c2, indem es die Priorität innerhalb der gewählten "scheduling class" festlegt. ZAHL kann einen Wert zwischen 0 und 7 haben, 0 hat die höchste Priorität.
-pPID Hiermit wird die PID eines laufendes Prozesse an ionice übergeben, für den man die "scheduling class" ändern bzw. abfragen möchte.
-h Zeigt eine kurze Hilfe an

Im folgenden dazu drei kurze Beispiele:

Der Befehl

ionice -p8 

zeigt die Priorität des Prozesse mit der PID 8 an. Lautet die Ausgabe

none: prio 0

so ist für diesen Prozess keine Priorität vergeben.

Der Befehl

ionice -c3 -p123 

ändert die I/O Priorität der Prozesses mit der PID 123 auf "3", d.h. es wird ein "Idle-Prozess".

Der Befehl

ionice -c2 -n0 Programm 

startet "Programm" mit der scheduling class 2 = best effort, in dieser Klasse hat "Programm" aber die höchste Priorität (0).

Diese Revision wurde am 15. Oktober 2011 um 11:23 Uhr von dErFeLe erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Shell, System

Passwort vergessen?