Effektive dekomprimier Möglichkeit für viele 2-5 GB große Files

tenax4

Lieutenant
Registriert
Apr. 2006
Beiträge
587
Hallo
ich suche ein Programm um viele 2-5 GB große gz-Files auszupacken. Ich habe gzip genommen und es wurde nur ein Kern von 48 genutzt. Nun habe ich den Entpacker pigz installiert und statt multithreat-auspacken hab ich wieder nur einen Kern. Komprimieren geht mit vielen Kernen gut unter pigz.
Kennt ihr einen guten multi-Entpacker unter Linux der viele Kerne für das auspacken benutzt?

Vielen Dank
tenax4
 
dann entpack einfach viele archive parallel anstatt nacheinander. so 48 gleichzeitig sollte die cpu auslasten :)
 
  • Gefällt mir
Reaktionen: kartoffelpü
Wenn ich es richtig im Kopf habe, dann ist der Algorithmus von gzip nur für Singlethread ausgelegt.
Du musst schon mehrere Dateien gleichzeitig entpacken, wenn du eine Multicore-CPU auslasten möchtest.
 
tenax4 schrieb:
Hallo
ich suche ein Programm um viele 2-5 GB große gz-Files auszupacken. Ich habe gzip genommen und es wurde nur ein Kern von 48 genutzt. Nun habe ich den Entpacker pigz installiert und statt multithreat-auspacken hab ich wieder nur einen Kern. Komprimieren geht mit vielen Kernen gut unter pigz.
Kennt ihr einen guten multi-Entpacker unter Linux der viele Kerne für das auspacken benutzt?

Vielen Dank
tenax4

find . -name '*.gz' -type f | xargs -n 1 -P 48 gunzip
 
  • Gefällt mir
Reaktionen: SaxnPaule, Joe Dalton und guzzisti
Danke für Eure Antworten. Ich hatte mir von pigz erhofft in den entsprechnden Ordner zu gehen und pigz -d *.gz einzugeben und dann alle Files auszupacken.
Ich habe jetzt auch eine traurige Textstelle dazu gefunden:
Pigz compresses using threads to make use of multiple processors and cores..
Decompression can't be parallelized, at least not without specially prepared deflate streams for that purpose. As a result, pigz uses a single thread (the main thread) for decompression, but will create three other threads for reading, writing, and check calculation, which can speed up decompression under some circumstances.

Script habe ich noch nie geschrieben. Habe auf einen einfachen Befehl gehofft um mehr Kerne zu nutzen.
Ergänzung ()

Danke @foofoobar Jetzt muss ich nur noch nachlesen was der Befehl macht.
Danke dafür.

 
tenax4 schrieb:
Ergänzung ()

Danke @foofoobar Jetzt muss ich nur noch nachlesen was der Befehl macht.
Danke dafür.
Packt alle *.gz unterhalb des aktuellen Dirs aus und startet dafür maximal 48 gunzips gleichzeitig.

Sollten die Filenamen white space enthalten:

find . -name '*.gz' -type f -print0 | xargs -0 -n 1 -P 48 gunzip
 
Oh vielen lieben Dank für die Erklärung. Habe schon angefangen dazu zu lesen. Ich habe normale Seq-Files (meist 20 bis 30) als gz in einem Ordner.
Die file Namen sind ohne white space.
find . *.gz -type f -print0 | xargs -0 -n 1 -P 48 gunzip

müsste dann auch funktionieren.
Ergänzung ()

Foofoobar vielen Dank für Deine Hilfe.
Ich habe Deine Zeile auf den Server kopiert und so schnell wie nie 4 Test Files ausgepackt.
Vielen Dank das erleichtert mir in der Zukunft vieles.:)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: SaxnPaule
Ich weis nicht in wie fern das noch wichtig sein sollte, aber wenn du wirklich 48 Dateien dekomprimierst, mit 48 Instanzen, überlege bitte noch die Last auf dem Datenträger(n). Bei ner SSD sollte es zwar warm werden aber sonst i.O. sein. Aber bei ner HDD wirds im Endeffekt vielleicht langsamer als wenn du z.B. 12 gleichzeitig entpackst.

Nur ne Überlegung, muss nicht wichtig sein...
 
Gute Anmerkung da die Daten ja auch geschrieben werden müssen. Ich habe das Limit jetzt mal auf 40 gesetzt um noch 8 threats für andere Aufgaben frei zu lassen.
 
Zurück
Oben