You are here: Home Service Compute-Server (Linux)

Compute-Server (Linux)

Verbindungsaufbau

Der Zugang zu dem Compute-Server ist für alle Mitarbeiter der Lehrstühle Softwaretechnologie und Programmiersprachen automatisch freigegeben. Benötigen andere Mitarbeiter, Studenten oder Gäste eine Zugangsberechtigung, bitte an den Netzwerkadministrator wenden. Der Rechner ist ausschliesslich per ssh, auch von ausserhalb der Fakultät bzw. der Universität erreichbar. Folgende Befehle starten eine interaktive Verbindung (Session) bzw. führen nur das angegebene Programm aus.

  • ssh [-l USER] akoakoa.informatik.uni-freiburg.de

  • ssh -qt [-l USER] akoakoa.informatik.uni-freiburg.de 'BEFEHL OPTIONEN ...'

Jeder Benutzer ist einer automatisch einer Benutzergruppe zugeordnet, der bestimmte Teile der System-Resourcen (Prozessoren und Speicher) zur Verfügung stehen. Die durch den Benutzer gestarteten Programme werden vom System ausschliesslich auf bzw. innerhalb der Resourcen ausgeführt. Innerhalb einer Benutzergruppe werden alle Resourcen zwischen den verschiedenen aktiven Benutzern und den laufenden Programmen aufgeteilt. Ein Benutzer kann die zugewiesene Benutzergruppe nicht ändern.

Alle Verbindungen (Sessions) werden in einer kleineren, administrativen Resource-Klasse mit wenigen Prozessoren ausgeführt, die sich alle Benutzer bzw. Gruppen teilen. Daher sollten innerhalb der Login-Shell keine rechen- oder speicherintensiven Prozesse gestartet werden. Hierfür stehen weitere Resource-Klassen zur Verfügung.

Achtung: Zur Zeit kann sich sowohl die Aufteilung, als auch die Anzeige, die Auswahl und Verfügbarkeit der Resource-Klassen kurzfristig ändern. Je nach Bedarf müssen u.U. entsprechende Anpassungen vorgenommen werden.

 

Benchmark-Programmaufrufe

Für jede Verbindung (Session) wird der Resourcen-Verbrauch überwacht und am Ende angezeigt. Die angegebenen Werte beziehen sich auf die gesamte jeweilige Verbindung, enthalten aber nur einen Teil der Daten, der in der Session aufgerufenen Programme. Genauere Werte über die verwendeten Resourcen lassen sich mit den nachfolgend beschriebenen Programmaufrufen ermitteln.

Das auszuführende Programm (Prozess) wird einmal oder mehrmals in einer eigenen Umgebung gestartet und nach der gesamten Ausführung (Task) erfolgt die Ausgabe der Resource-Daten. Die Ausführung des Tasks wird von einer vpt-Instanz gesteuert bzw. überwacht, die i.d.R. nicht in der Resource-Klasse des Tasks abläuft.

Achtung: z.Zt. werden für Programme, die nur sehr kurze Laufzeiten von wenige Sekunden haben u.U. keine hinreichend genauen Auswertungen erreicht.

 

  • vpt ... [-j] [-o FILE] -c 'COMMAND [OPTIONS]'

Mit der c-Option wird das auszuführende Programm angegeben. Die c-Option muß immer als letzte Option angegeben werden. Es ist möglich COMMAND ohne, mit relativem oder absoluten Pfad anzugeben. Die Verwendung ;-getrennter Befehlssequenzen wird aktuell nicht unterstützt. Die Angabe von Shell-Kontrollzeichen (<;|&>) sollte vermieden werden. Leerzeichen innhalb von Parametern müssen durch ein vorangestelltes \-Zeichen gekennzeichnet werden.

Durch die j-Option wird eine Ausführung von Prozessen und Task im Hintergrund (Background) erreicht. In diesem Fall erfolgt die Ausführung unbhängig vom Benutzerverzeichnis und die aktuelle Benutzer-Session kann sofort beendet werden. Bei Task-Ende wird eine Email-Benachrichtigung erzeugt und an den Benutzer verschickt.

Wurde über die o-Option ein Dateiname vorgegeben, werden die Ausgaben aller Programmausführungen in diese Datei umgeleitet. Im Background-Modus wird der Dateiname automatisch gewählt, wenn er nicht angegeben wurde. Wenn für FILE der Wert "/dev/null" angegeben wird, erfolgt keine Speicherung der Programmausgaben.

Insbesondere wenn die Background-Option (j-Option) verwendet wird, sollten alle Pfade absolut angegeben werden (z.B. in OPTIONS bzw. innerhalb des auszuführenden Programms). Wenn für FILE oder COMMAND relative Pfade angegeben wurden, erfolgt automatich die Vervollständigung des jeweiligen Pfades.

 

  • vpt -p PROCESSORS -m MEMORY ...

Durch entsprechende Angaben für die p-Option und die m-Option wird das angegebene Programm nur auf bestimmten Prozessoren (z.B. '1,2,33-55,99') bzw. Speicherbereichen (z.B. '0-3') ausgeführt. Die möglichen Werte sind durch die Resourcen begrenzt, die für die jeweilige Benutzergruppe vorgegeben sind.

Achtung: Aktuell werden die Resourcen nicht exklusiv reserviert, können also von allen anderen Benutzern der Benutzergruppe weitergenutzt werden. Bitte verwenden Sie die p-Option und die w-Option in Kombination (s.u.).

 
  • vpt -p#N -w POOL ...

Die Vorgabe von #N und POOL vereinfacht die Auswahl der Prozessoren und der Resource-Klasse. Hierbei definiert N die Anzahl der gewünschten Prozessoren, und POOL die Klasse aus welcher die Prozessoren genommen werden sollen. Während der Laufzeit von COMMAND, stehen die ausgewählten Prozessoren in POOL nicht zur Verfügung.

Achtung: Zur Zeit stehen die Klassen 'pool1', 'pool2' und 'pool3' mit jeweils 6 Prozessoren und 16 GByte Speicher zur Verfügung. Aktuell ist auch 'pool4' als Summe von pool1-3 definiert.

  

  • vpt [-z KEY1=VALUE1, KEY2=VALUE2, ...] ...

Mit der z-Option können verschiedene (Abbruch-) Bedingungen vorgegeben werden, die den Ablauf der Programmausführungen vorgeben, beeinflussen bzw. begrenzen. Ist eine Abbruchbedingung erfüllt, wird ein TERM-Signal an den Prozess gesendet. Sollte sich das Prozess nicht innerhalb von 15 Sekunden beenden, wird es mit einem KILL-Signal beendet.

 

Der count-Wert (z.B. 'count=123') gibt die Anzahl von Ausführungen vor, die insgesamt vorgenommen werden sollen. Der Default-Wert beträgt 1. Das angegebene Programm wird sequentiell als eigenständiger Prozess in jeweils derselben Resource-Klasse ausgeführt. Ein Fehler während eines Prozesses führt i.d.R. nicht zum Abbruch des Tasks.

Die time-Bedingung (z.B. 'time=1w2d3h4m5s') ist erfüllt, wenn die Laufzeit des Prozesses den angegebenen Wert erreicht. Dieser kann in o.g. Form sekundengenau vorgegeben werden. Die einzelnen Zeitparameter werden addiert: 1 Woche, 2 Tage, 3 Stunden, 4 Minuten, 5 Sekunden.

Die gtime-Bedingung (z.B. 'gtime=7d23h59m0s') ist erfüllt, wenn die gesamte Task-Laufzeit den angebenen Wert erreicht. Dieser kann in o.g. Form sekundengenau vorgegeben werden. Die einzelnen Zeitparameter werden addiert: 7 Tage, 23 Stunden, 59 Minuten, 0 Sekunden.

Die cpu-Bedingung (z.B. 'cpu=1h12m') ist erfüllt, wenn die Prozessor-Zeit für den aktuellen Prozess den angegebenen Wert erreicht. Die Angabe kann sekundengenau erfolgen. Die Prozessor-Zeit gibt an, wie lange das Programm tatsächlich ausgeführt wurde und ist die Summe aus den System- und User-Zeiten auf allen Prozessoren

Die idle-Bedingung (z.B, 'idle=17s') ist erfüllt, wenn die Idle-Zeit für den aktuellen Prozess den angegebenen Wert erreicht. Die Angabe kann sekundengenau erfolgen. Die Idle-Zeit gibt an, wie lange das Programm im Wartezustand war und nicht ausgeführt wurde. Bei Verwendung von nur einer CPU, ist die Prozess-Laufzeit gleich der Summe aus Prozessor- und Idle-Zeit.

 

  • vpt [-fN] ...

Die Art der Auswertung bzw. das Anzeigeformat kann mit der f-Option variiert werden. Aktuell werden Prozess-Laufzeit, Idle-Zeit, System-Zeit, User-Zeit, virtueller Speicher, RSS-Speicher, Text-Speicher, Data-Speicher und Shared-Speicher erfasst und ausgewertet.

In der Standardeinstellung (N=1) werden die vorgenannten Parameter bei Task-Ende ausgegeben. Wenn nach mehreren Prozess-Ausführungen mehrere Datensätze vorhanden sind, werden für jeden Parameter der arithmetische Mittelwert und die jeweiligen Minimal/Maximal-Werte ausgegeben.

Bei der erweiterten Ausgabe (N=2) werden die Daten tabellarisch formatiert und es erfolgt eine andere statistische Auswertung. Die Spalten enthalten Median, Minimal/Maximal-Werte, Standardabweichung und Standardfehler. Die Anzahl der Nachkommastellen und Einheiten werden automatisch gewählt.

 

Prozess-Abbruch

Neben der Vorgabe der maximalen Dauer für eine Programmausführung oder die gesamte Task-Laufzeit (s.o.), können die jeweils laufenden Prozesse auch über Unix-Prozessignale vorzeitig beendet werden. Die folgenden Signale müssen an den jeweiligen vpt-Prozess geschickt werden.

 

  • SIGINT: Der aktuelle Prozess, aber nicht die gesamte Task-Ausführung wird beendet.

  • SIGTERM: Der aktuelle Prozess und die gesamte Task-Ausführung wird beendet.

 

Nach dem Senden der Signale wird die jeweilige Aktion sofort (oder u.U. nach wenigen Sekunden) ausgelöst.

 

Status-Anzeigen

Es werden verschiedene Status-Anzeigen angeboten (siehe auch "vpt -h"), deren Ausgaben je nach System, Konfiguration oder Benutzergruppe variieren können. Der Befehl "vpt -s" gibt eine Zusammenfassung zur Systemkonfiguration und zur aktuellen Systemauslastung aus. Der Befehl "vpt -t" zeigt Details zur Hardwarekonfiguration an (Prozessoren, Speicher, etc.). Je nach Systemtyp sind evtl. nicht alle Daten verfügbar. Die Cache-Informationen sind nur für bestimmte Prozessoren und die Speicherknoten nur für NUMA-Systeme relevant. Der Befehl "vpt -k" listet die aktuelle Auslastung der einzelnen Prozessoren auf. Es werden nur die Prozessoren der eigenen Resource-Klasse berücksichtigt. Der Befehl "vpt -l" gibt Details zur Speicherauslastung aus. Bei NUMA-Systemen werden auch Informationen zur Auslastung der einzelnen Speicherknoten ausgegeben.

Achtung: Die Ausgaben der l-Option sind z.Zt. nicht verlässlich und werden noch überarbeitet.

 

 

Accounting-Details "under construction"

Die Accounting-Regeln basieren u.a. auf verschiedenen Systemkonzepten und Algorithmen. Dadurch sind einige system-spezifische Ungenauigkeiten unvermeidbar. Im folgenden beschriebene Einschränkungen werden möglicherweise in künftigen Versionen der Überwachungsfunktionen nicht mehr gegeben sein.

Bei der Prozessorauslastung wird die Zeit angegeben in der die Programme tatsächlich auf einem oder mehreren Prozessoren ausgeführt wurden. Der relative Wert gibt an, welcher Anteil der zur Verfügung stehenden Prozessoren benutzt wurde. Diese Zahlen entstehen durch Summierung der entsprechenden Werte für alle Prozesse innerhalb einer Verbindung (Session). Bei interaktiven Verbindungen beinhaltet das auch die Login-Shell, rc-Scripte und die vpt-c-Aufrufe. In allen Fällen werden Prozesse, deren Vorgängerprozess nicht zu dieser Verbindung gehört, nicht berücksichtigt.

Mit dem Speicherverbrauch werden die Werte angegeben, die alle Prozesse einer System-Session zusammengenommen maximal erreicht haben. Eine sog. System-Session ist i.d.R. identisch zu einer Verbindung. Nicht berücksichtigt werden Prozesse, die eine eigene System-Session erzeugen (z.B. Pipe/Background-Prozesse oder Shell-Programme). Jeder vpt-c-Aufruf startet eine eigene System-Session. Aktuell werden diese Werte in einem 3-Sekunden-Intervall ermittelt, wodurch kurzlebige Prozesse sowie die letzten Sekunden eines Prozesses u.U. nicht erfasst werden können. Neben der Grösse des virtuellen Speichers zeigt der RSS-Wert den tatsächlich belegten Speicher an und TEXT und DATA geben die Grösse des Programm-Codes bzw. des Daten-Segments an.