Richtlinien für rechen- und speicherintensive Jobs


Was sind rechenintensive Jobs?

Was sind speicherintensive Jobs?

Ihre Verantwortung

Vorsichtsmaßnahmen für rechenintensive Jobs

Vorsichtsmaßnahmen bei speicherintensiven Jobs

Auf welchem Rechner?

Was für Jobs sind zulässig?

Weitere Tips


Was sind rechenintensive Jobs?

Unter diese Klasse fallen alle Prozesse, die in relativ kurzer Zeit relativ viel CPU-Zeit benötigen. Die untere Schwelle liegt bei Jobs, die in weniger als 10 Minuten mehr als 5 Minuten CPU-Zeit verbrauchen.

Mit dem ps-Kommando läßt sich das leicht ermitteln:

ps -fu login
wobei login für Ihren Loginnamen steht. Unter TIME sehen sie die bislang benötigte CPU-Zeit und unter STIME den Zeitpunkt, an dem das Programm gestartet worden ist.

Was sind speicherintensive Jobs?

Ein Prozess gilt als speicherintensiv, wenn mehr als 10% des auf dem jeweiligen Rechner zur Verfügung stehenden virtuellen Speichers verwendet wird.

Mit dem swap-Kommando läßt sich feststellen, wieviel virtueller Speicher die Maschine besitzt:

turing$ /usr/sbin/swap -s
total: 247704k bytes allocated + 56768k reserved = 304472k used, 975264k available
Auf der Turing stehen somit ca. 1,2GB virtueller Speicherplatz zur Verfügung, von denen (im Beispiel) zur Zeit ca. 975MB noch frei sind. Somit fallen Prozesse mit einem Speicherplatzverbrauch von mehr als 120MB Speicher auf der Turing in die Klasse der speicherintensiven Jobs. (Das Beispiel ist etwas älter, inzwischen steht auf Turing deutlich mehr Speicher zur Verfügung).

Der Speicherplatz eines Prozesses läßt sich am leichtesten durch die Größe des entsprechenden Eintrags im proc-Dateisystem feststellen:

turing$ ls -l /proc/06876
-rw-------   1 borchert sai      55427072 Feb 11 10:01 /proc/06876
Der Prozeß mit der Prozeß-ID 6876 hat in diesem Beispiel einen Speicherplatzverbrauch von ca. 55MB.

Ihre Verantwortung

Jeder, der rechen- oder speicherintensive Jobs startet, ist dafür verantwortlich, daß diese Jobs so wenig wie möglich den Betrieb für die anderen Teilnehmer stören. Jobs, die unter einer der beiden Kategorien (oder sogar unter beide gleichzeitig) fallen, können bei fehlender Achtsamkeit den Betrieb erheblich stören:

Vorsichtsmaßnahmen für rechenintensive Jobs

Rechenintensive Jobs sind grundsätzlich mit dem Kommando nice zu starten, etwa so:
theseus$ nice myjob >myjob.out 2>&1 &
nice steht für ``seid nett zueinander'' und sorgt dafür, daß der Prozeß mit einer niedrigeren Priorität läuft. Die Priorität (bzw. genauer gesagt, der nice-Wert) kann auch nachträglich mit dem Kommando renice verändert werden.

Auf allen Maschinen sollten von einem Benutzer niemals mehr rechenintensive Jobs gestartet werden als Prozessoren zur Verfügung stehen. Fast alle Maschinen haben nur einen Prozessor -- hier ist ein Überblick unserer Multiprozessormaschinen:

Thales6*2*2 Prozessoren2557 Mhz49078MB
Turing4*2 Prozessoren1050 Mhz16384MB
Theseus4*2 Prozessoren1500 Mhz32768MB
Turan6 Prozessoren248 Mhz2304MB

Um eine Maschine fair unter allen aufzuteilen, die rechenintensive Jobs starten, lohnt sich ein Blick auf den aktuellen Load-Level:

turing$ uptime
  2:14pm  up 55 day(s),  6:07,  29 users,  load average: 3.29, 3.88, 4.07
Der Load-Level (die Zahlen hinter load average) gibt an, wieviele Prozesse durchschnittlich rechenbereit sind. Dabei ist die Zahl, die als erstes hinter load average auftaucht, die aktuellste (im Beispiel: 3.29). Wenn Sie von dieser Zahl den ganzzahligen Anteil nehmen (im Beispiel: 3) erhalten Sie fast immer zutreffend die Zahl der rechenintensiven Jobs auf diesem Rechner. Wenn Sie wissen möchten, vom wem die stammen, können Sie das rasch mit pscheck ermitteln:
turing$ /usr/local/manager/bin/pscheck
Number of processes: 373
Number of users: 40

Top-20 list of CPU-consuming processes:
     UID   PID  PPID  C    STIME TTY      TIME CMD
    usr1 29436 29435 25 16:54:05 ?       1214:23 /local/turing/math/Bin/mathexe -pwpath {"/local/turing/math/Install"} -run $Pat
    root     3     0  1   Dec 18 ?       785:54 fsflush
    root 21443   265  0   Jan 09 ?       272:53 rpc.ttdbserverd
    usr2  6876  4287 25 10:01:18 pts/75  240:02 pdp
    usr3 18273 18271 25 12:30:11 pts/86  101:59 evu
    root   327     1  0   Dec 18 ?       58:40 /usr/lib/autofs/automountd
[...]
Ignorieren Sie die Prozesse mit UID root -- hier handelt es sich um langlaufende Prozesse für den Systembetrieb. Keiner dieser Prozesse ist unter normalen Umständen rechenintensiv. Interessanter sind die anderen Prozesse, die usr1, usr2 und usr3 gehören (die Namen wurden anonymisiert). usr1 läßt offenbar Mathematica laufen, während usr2 und usr3 eigene Programme haben (namens pdp und evu), die rechenintensiv sind. (Alternativ empfiehlt sich auch die Verwendung des Kommandos top, um einen Überblick der rechen- oder speicherintensiven Prozesse zu gewinnen.)

In diesem konkreten Fall wäre es unfair, wenn Sie mehr als einen Prozess starten würden, es sei denn, sie wählten dafür die absolut niedrigste Priorität (nice -19 ...) und benachteiligen sich damit nicht nur gegenüber dem normalen Betrieb, sondern auch gegenüber allen anderen rechenintensiven Jobs.

Vorsichtsmaßnahmen bei speicherintensiven Jobs

Bei speicherintensiven Jobs, sollten Sie sicherstellen, daß zum Zeitpunkt des Starts und auch während der weiteren Laufzeit genügend freier Speicher auf der Maschine zur Verfügung stehen. Wenn mehr als 70% des virtuellen Speichers verbraucht sind, dürfen keine speicherintensiven Jobs mehr gestartet werden und alle laufenden speicherintensiven Jobs müssen abgebrochen werden.

Unter bestimmten Umständen (bei Programmen mit Quellen, die in C oder Modula-2 geschrieben sind) ist es bei speicherintensiven Jobs möglich, ein spezielles Swap-File einzurichten, um die Speichersituation zu entschärfen.

Auf welchem Rechner?

Bitte verwenden Sie -- soweit möglich -- die Thales oder die Theseus. Die Thales ist die leistungsfähigste Maschine, aber auch unser wichtigster File-Server. Die Theseus ist recht leistungsfähig und nicht mehr als File-Server aktiv. Ebenfalls attraktiv ist die Turing.

Rechner, die in den öffentlichen Räumen stehen (O27/211+213, E44 und U41), dürfen für rechen- oder speicherintensive Jobs grundsätzlich nicht verwendet werden. Die Maschinen, die einzelnen Instituten gehören, dürfen nach entsprechender Absprache genutzt werden.

Was für Jobs sind zulässig?

Auch wenn alle oben genannten Bedingungen erfüllt sind, können wir aus Kapazitätsgründen nicht beliebige Jobs zulassen. Deswegen sind grundsätzlich nur Jobs, die Studiums- und Forschungsinteressen dienen, gestattet. Ich bitte allerdings um Kenntnis, wenn unsere Ressourcen für externe Vorhaben genutzt werden.

Nicht zulässig ist die Teilnahme an irgendwelchen Challenges (z.B. zum Knacken irgendeines weiteren kryptographischen Schlüssels) ohne meine ausdrückliche Zustimmung. Die wirklich interessanten Challenges sind bereits abgehakt und der Rest sind reine Rechenübungen, bei denen leicht im voraus abgeschätzt werden kann, wie lange sie benötigen. Selbst wenn die Teilnahme an solchen Challenges unter Berücksichtigung der obigen Richtlinien den normalen Rechenbetrieb nicht behindert, so werden doch die wirklich wichtigen Jobs verlangsamt, die Studiums- und Forschungsinteressen dienen.

Weitere Tips

Es empfiehlt sich, langlaufende Prozesse innerhalb einer screen-Sitzung laufen zu lassen (mehr zu screen finden Sie auf der entsprechenden Manualseite).

Programme können auch zu Zeitpunkten gestartet, angehalten und fortgesetzt werden, ohne daß dazu jemand anwesend sein muß. Sehen Sie sich dazu die Manualseite von at an und informieren Sie sich über kill -STOP und kill -CONT.

Das KIZ besitzt ebenfalls eine Reihe von sehr attraktiven Maschinen, die von allen interessierten Parteien in der Universität für rechen- und speicherintensive Jobs genutzt werden können. Auch hier sind natürlich Spielregeln einzuhalten -- mehr dazu erfahren Sie bei den Mitarbeitern des Rechenzentrums.

Verschiedene Super-Computer im Stuttgart und Karlsruhe stehen allen Landesuniversitäten zur Verfügung. Hinweise hierzu gibt es in unserem Rechenzentrum.

Zu weiteren Fragen stehe ich gerne jederzeit zur Verfügung. Bitte nutzen Sie im Zweifelsfall lieber meinen Rat als daß sie (auch bei ansonst besten Absichten ungewollt) eine unserer Maschinen dramatisch behindern oder sogar lahmlegen. In solchen Fällen behalte ich mir immer das Recht vor, entsprechende Prozesse ohne Vorwarnung abzuschiessen.


Andreas Borchert, 13. April 2008