Ich habe eine sehr große Speicherplatte (16T). Ich möchte 'du' darauf ausführen, um herauszufinden, wie viel jedes Unterverzeichnis benötigt. Das dauert jedoch sehr lange. Zum Glück habe ich eine Gruppe von Computern zur Verfügung. Ich kann daher 'du' parallel ausführen, jeder Job läuft in einem separaten Unterverzeichnis und schreibt ein einfaches Skript, das das tut. Gibt es schon so etwas oder muss ich es selbst schreiben?Run du parallel
Antwort
Es ist einfach, es mit GNU Parallel zu tun:
parallel du ::: */*
Es ist nicht klar aus Ihrer Frage, wie Ihr Speicher entworfen wurde (RAID-Array, NAS, NFS oder etwas anderes).
Aber, fast unabhängig von der aktuellen Technologie, laufen du
parallel vielleicht nicht so eine gute Idee - es ist sehr wahrscheinlich, die Dinge tatsächlich zu verlangsamen.
Das Disk-Array verfügt über eine begrenzte IOPS-Kapazität, und mehrere Threads du
werden alle aus diesem Pool genommen. Noch schlimmer, oft einzelne du
verlangsamt alle anderen IO-Vorgänge viele Male, auch wenn du Prozess nicht viel Festplatten-Durchsatz verbrauchen.
Im Vergleich, wenn Sie nur einzelne CPU haben, wird die parallele Ausführung (make -j N
) den Build-Prozess verlangsamen, da die Prozessumschaltung einen beträchtlichen Overhead hat.
Gleiches Prinzip gilt für Festplatten, insbesondere für rotierende Festplatten. Die einzige Situation, in der Sie eine beträchtliche Geschwindigkeitssteigerung erzielen, ist, wenn Sie N Laufwerke in unabhängigen Verzeichnissen installiert haben (etwa /mnt/disk1
, /mnt/disk2
, ..., /mnt/diskN
). In diesem Fall sollten Sie du
in N Threads ausführen, 1 pro Datenträger.
Eine häufige Verbesserung, um die Geschwindigkeit zu erhöhen, ist, Ihre Festplatten mit noatime
Flag zu mounten. Ohne dieses Flag wird beim Scannen großer Laufwerke eine Menge Schreibaktivität zur Aktualisierung der Zugriffszeit generiert. Wenn Sie noatime
Flag verwenden, wird Schreibaktivität vermieden, und du funktioniert viel schneller.
Dies ist der Speicher meiner Universität, daher kenne ich die Details nicht. Da dies jedoch ein großer Datenträger ist, dessen Zweck darin besteht, als Datenträger für einen Cluster zu dienen (in diesem Fall Condor), gehe ich davon aus, dass er so ausgelegt ist, dass er mehrere, wenn nicht viele IO-Vorgänge gleichzeitig unterstützt. –
Wie verwenden Ihre Clientcomputer diesen Speicher? NFS mounten? Wenn ja, dann könnte der parallele Scan funktionieren, weil NFS einen beträchtlichen Netzwerk-Round-Trip-Overhead hat. – mvp
Gibt es eine Möglichkeit für mich, dies selbst zu überprüfen (einige Befehle laufen gerne)? –
Gibt es schon so etwas oder muss ich es selbst schreiben?
Ich schrieb sn
für mich, aber Sie könnten es auch zu schätzen wissen.
sn p .
geben Sie Größen von allem im aktuellen Verzeichnis. Es läuft parallel und ist schneller als du
auf großen Verzeichnissen.
- 1. Run ScalaTest Tests parallel
- 2. Run parallel von bash
- 3. run command nimmt viele Argumente mit GNU parallel
- 4. Run Azure Daten Fabriken parallel für verschiedene Mitglieder
- 5. NodeJS parallel mit Versprechen
- 6. parallel Aufgabe in TBB
- 7. parallel
- 8. Unterprozessaufrufe werden parallel ausgeführt?
- 9. Tasksequenz parallel in Fake
- 10. omp parallel zu omp parallel für
- 11. Run zwei Asynchron-Aufgaben parallel und sammle Ergebnisse in .NET 4.5
- 12. Threads nicht parallel ausgeführt
- 13. Parallel vorhergesagt
- 14. Parallel Reduction
- 15. Python: execute cat Subprozess parallel
- 16. Willst du ein int-Array in Hauptfunktion von Thread run() -Funktion verwenden
- 17. Akka Stream - Parallel lauffähige Graphen
- 18. Parallel Brute-Force-Algorithmus
- 19. IPython parallel Skripte die lokalen Variablen
- 20. xvfb geführten unzuverlässig, wenn mehrere Instanzen parallel
- 21. Mehrere jmx-Dateien parallel ausführen
- 22. hast du python setup.py ausgeführt?
- 23. parallel parLapply setup
- 24. Wie generiert man Zufallszahlen parallel?
- 25. Can Docker Engine kann Container parallel starten
- 26. Wie Code parallel zu Indy.Post
- 27. OpenMP verschachtelte parallel zum Schleifen vs Innen parallel zur
- 28. Wie konvertierst du gleichzeitig in die Liste?
- 29. Gulp: Mehrere Node-Skripte parallel laufen lassen
- 30. Mit R parallel beschleunigen Bootstrap
Beachten Sie, dass IO nicht immer multi-tasked sein kann. – konsolebox