Warum ist mein Master-Knoten im Leerlauf, wenn GNU parallel ausgeführt wird?

354
Mr Purple

Ich verwende gnu-parallel, um mehrere Python-Skripte parallel auf mehreren Computern in meinem Gigabit-Netzwerk auszuführen.

Die verarbeiteten Dateien befinden sich in einem tmpfs-Ordner (RAM) auf meinem Master-Knoten. Wenn ich einen parallelen Prozess starte, kann ich sehen, dass alle Kerne im Remote-Knoten funktionieren, aber mein Master-Knoten bleibt inaktiv.

So sieht meine parallele Linie aus:

parallel --workdir ./netshare --filter-hosts -S :,192.168.88.222\ 'myscript.py {.}.shp output_{.}.shp input.shp' ::: tile_.shp 

Ich habe versucht, die Reihenfolge der IP-Adressen 192.168.88.222 ,: mit dem gleichen Ergebnis umzukehren.

Ich habe versucht, nur auf dem lokalen Master-Knoten auszuführen. Abgesehen von der Warnung, dass keine Remote-Knoten verfügbar sind, funktionieren alle 8 lokalen Threads.

Ich dachte, es könnte eine Netzwerklatenz sein, aber überhaupt keine Python-Skripte starten! Auf dem Remote-Host sehe ich, dass vier problemlos laufen.

Laut Ole's Kommentar habe ich das Problem mit bzip2 getestet. Hier der Befehl:

 parallel -S $SERVER1,: 'cd /path/to/mounted/network/share && cp largefile.avi file.avi && bzip2 -v file.avi && rm file.avi.bz2' ::: 

Der Test funktionierte genau wie erwartet. Alle Kerne aller Hosts wurden mit cp und dann mit bzip gestartet. Das Problem liegt also irgendwie in meinem Python-Skript.

1
Kannst du das mit anderen Befehlen - etwa bzip2 - reproduzieren? Ole Tange vor 8 Jahren 1
Es stellte sich heraus, dass die Antwort darauf bezogen war, dass auf das Arbeitsverzeichnis korrekt zugegriffen wurde. Durch sorgfältiges erneutes Einhängen jedes Ordners und Überprüfen der Flags des Arbeitsverzeichnisses wurde dieses Problem behoben. Die Lösung ist meine Antwort definitiv nicht wert. Danke für den Zeiger, obwohl @Ole mir ein einfaches Mittel zur Fehlerbehebung gab. Mr Purple vor 8 Jahren 0

0 Antworten auf die Frage