Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
GNU Parallel<br />
Schwerpunkt<br />
chen packen lässt, sieht der Archivierer<br />
nicht die komplette Datei <strong>und</strong> packt sie<br />
daher nicht ganz so effizient. Wie groß<br />
die Abweichungen ausfallen, hängt von<br />
den zu komprimierenden Daten ab.<br />
Falls Ihnen die parallele Bearbeitung immer<br />
noch nicht schnell genug abläuft,<br />
kann GNU Parallel auch noch weitere<br />
Computer im Netzwerk einspannen.<br />
Dann verkleinert jeweils ein anderer Rechenknecht<br />
jedes Urlaubsfoto. Damit<br />
das funktioniert, müssen Sie sich via SSH<br />
auf den entfernten Computer ohne die<br />
Eingabe eines Passwortes anmelden<br />
können. Dabei hilft beispielsweise das<br />
Programm ssh‐agent û.<br />
Des Weiteren muss lokal noch Rsync<br />
<strong>und</strong> auf den entfernten PCs jeweils GNU<br />
Parallel installiert sein. Letzteres ist notwendig,<br />
damit die Software die Anzahl<br />
der Prozessoren ermitteln kann, Rsync<br />
dient zum Übertragen der Daten. Der<br />
folgende Befehl prüft, ob das Tool Zugriff<br />
auf die Rechner mit den IP-Adressen<br />
192.168.2.11 <strong>und</strong> 192.168.2.12 hat:<br />
$ parallel ‐‐sshlogin 192.168.2.1U<br />
1,192.168.2.12 'hostname; echo' :U<br />
:: 1 2<br />
GNU Parallel meldet sich damit per SSH<br />
auf den beiden Rechnern an, startet dort<br />
jeweils das Programm Hostname <strong>und</strong><br />
liefert dessen Ausgaben zurück 6 . Das<br />
echo dient dabei als kleine Hilfe: GNU<br />
Parallel startet den Befehl ja für jeden<br />
hinter ::: aufgelisteten Parameter – doch<br />
hostname verlangt gar keine Parameter.<br />
Abhilfe schafft das angehängte, harmlose<br />
echo, das der obige Befehl einfach<br />
eine Zahl ausgeben lässt. Die zwei Zahlen<br />
schließlich sind noch notwendig, damit<br />
GNU Parallel beide Rechner kontaktiert.<br />
Stünde dort lediglich die 1, würde<br />
das Tool den Befehl hostname; echo nur<br />
auf einem der Computer ausführen.<br />
Anstelle der IP-Adressen dürfen Sie die<br />
Hostnamen verwenden, weitere Rechner<br />
hängen Sie durch Kommata getrennt<br />
hintereinander. Abweichende Login-<br />
Namen stellen Sie wie von SSH gewohnt<br />
mit einem Klammeraffen (@) vor den<br />
Rechnernamen. Klappt die Kontaktaufnahme,<br />
beginnt die Arbeit.<br />
Das dazu notwendige, etwas längliche<br />
Kommando zeigt Listing 3. Hier greift<br />
sich GNU Parallel die nächste Bilddatei<br />
<strong>und</strong> kopiert sie (‐‐transfer) auf einen<br />
der Computer. Dort setzt es dann das<br />
Kommando mogrify ‐resize 50% auf<br />
die Datei an. Anschließend holt GNU Parallel<br />
die Datei wieder zurück (‐‐return<br />
{}) <strong>und</strong> löscht die Kopie auf dem entfernten<br />
Rechner (‐‐cleanup).<br />
Um den gesamten Befehl übersichtlich<br />
zu halten, überschreiben mogrify<br />
<strong>und</strong> GNU Parallel hier wieder einfach die<br />
Originaldateien. Da die drei Parameter<br />
‐‐transfer, ‐‐return <strong>und</strong> ‐‐cleanup in<br />
der Praxis häufig zum Einsatz kommen,<br />
dürfen Sie sie mit ‐‐trc abkürzen.<br />
Bei solchen verteilten Berechnungen<br />
im Netzwerk stellen die Verbindungen<br />
den Flaschenhals dar. So dauert der<br />
Transfer von <strong>und</strong> zu den Rechnern unter<br />
Umständen länger als das Bearbeiten<br />
auf dem lokalen PC. Die verteilte Berechnung<br />
lohnt daher meist nur, wenn diese<br />
Berechnungen umfangreich sind beziehungsweise<br />
besonders lange dauern.<br />
Fazit<br />
GNU Parallel spielt seine Stärken immer<br />
dann aus, wenn sich eine rechenintensive<br />
Aufgabe in mehrere, voneinander<br />
unabhängige Teilaufgaben zerlegen<br />
lässt. In Bash-<strong>Skripten</strong> können Sie häufig<br />
For- <strong>und</strong> While-Schleifen mit GNU Parallel<br />
beschleunigen, wie etwa im Beispiel mit<br />
den Bildern ganz zu Beginn des Artikels.<br />
Angenehmer Nebeneffekt: Die Kommandos<br />
lassen sich dank GNU Parallel<br />
auch noch wesentlich besser lesen.<br />
Listing 3<br />
Das kleine Werkzeug kennt noch unzählige<br />
weitere nützliche Parameter <strong>und</strong><br />
Funktionen, deren Beschreibung ein ansehnliches<br />
Buch füllen würden. Wer zum<br />
ersten Mal mit Parallel arbeitet, sollte<br />
sich daher erst die Beispiele im Handbuch<br />
ansehen û.<br />
Übrigens haben wir in den Beispielen<br />
etwas gemogelt: Mogrify muss nicht,<br />
wie zu Beginn des Artikels, in einer For-<br />
Schleife stecken, sondern bearbeitet<br />
selbst mehrere Dateien. Es nutzt dabei<br />
sogar automatisch mehrere Prozessorkerne.<br />
GNU Parallel ist folglich auch keine<br />
Allzweckwaffe. Sie sollten vor seinem<br />
Einsatz immer prüfen, ob die von Ihnen<br />
aufgerufenen Kommandozeilenbefehle<br />
nicht schon von sich aus mehrere Kerne<br />
nutzen. (jlu) n<br />
Weitere Infos <strong>und</strong><br />
interessante Links<br />
www. linux‐user. de/ qr/ 28516<br />
6 Das Kommando<br />
echo<br />
hilft dabei, jeden<br />
der angegebenen<br />
Server<br />
anzusprechen.<br />
01 parallel ‐‐sshlogin hans@192.168.2.11,peter@192.168.2.12<br />
‐‐transfer ‐‐return {} ‐‐cleanup mogrify ‐resize 50% {} ::: *.tif<br />
06.2013 www.linux-user.de<br />
17