Was sind rechenintensive Jobs?
Was sind speicherintensive Jobs?
Vorsichtsmaßnahmen für rechenintensive Jobs
Vorsichtsmaßnahmen bei speicherintensiven Jobs
Mit dem ps-Kommando läßt sich das leicht ermitteln:
ps -fu loginwobei 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.
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 availableAuf 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/06876Der Prozeß mit der Prozeß-ID 6876 hat in diesem Beispiel einen Speicherplatzverbrauch von ca. 55MB.
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:
Thales | 6*2*2 Prozessoren | 2557 Mhz | 49078MB |
Turing | 4*2 Prozessoren | 1050 Mhz | 16384MB |
Theseus | 4*2 Prozessoren | 1500 Mhz | 32768MB |
Turan | 6 Prozessoren | 248 Mhz | 2304MB |
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.07Der 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.
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.
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.
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.
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.