• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[GELÖST] Archiv-SW mehrkernfähig?

Gibt's so was für Linux (openSuSE 11.3 x86_64)?

Früher habe ich tar / gzip zur Archivierung benützt und bin dann auf afio umgestiegen. Nur: Mein Backup /* auf USB-Festplatte…etwas amateurmäßig, ich weiß */ von etwa 90 GB Daten dauert mittler Weile 13 Stunden 45 Minuten, und in Anspruch genommen wird beim Komprimieren immer nur EIN CPU-Kern. Ich habe aber VIER Kerne und würde den Job gerne so splitten, dass auch alle vier Kerne die Kompression vornehmen können.

Gibt's da eine brauchbare Lösung? Danke für Eure Tipps. :D
 

RME

Advanced Hacker
Hallo generalmajor,

Stichwort: "multi-thread compression" oder "multiple CPU cores compression"

Da wäre 'pbzip2'

YaST Ausgabe:

pbzip2 - Parallelized Implementation of bzip2

PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and achieves near-linear speedup on SMP machines.
Es gäbe/gab auch noch 'mgzip' (multi-thread gzip) -- aber ich habe dies nirgens gefunden (auch nicht den Source-Code). (gabs da vielleicht Lizenz Probleme?)

Refs. für 'pbzip2'

http://www.freebsdonline.com/content/view/699/524/

http://www.linux.com/archive/feature/126412

Gruss,
Roland
 
OP
generalmajor

generalmajor

Hacker
Stimmt: mgzip ist nirgends auffindbar. Doch auch pbzip2 scheint ein Stiefkind zu sein, denn die aktuellste SuSE-RPM davon wurde für SuSE 10.0 erstellt. :-(
 

RME

Advanced Hacker
Weil ich dies auch eine interessante Sache finde (vor allem, wie programmiert man eine Anwendung so dass diese eine bestimmte Anzahl CPUs benützt) habe ich noch weiter gesucht.

Hier wäre eine Source für mgzip

http://distfiles.macports.org/mgzip/smp_mgzip_1.2c.tar.gz

und hier ein Patch dazu:

http://thammuz.tchpc.tcd.ie/mirrors/macports/release/ports/archivers/mgzip/files/patch-mgzip.c.diff
http://ftp.kaist.ac.kr/macports/release/ports/archivers/mgzip/files/patch-mgzip.c.diff

Aber es ist mir völlig unklar warum das Program (offenbar) "gestorben" ist (sonst wäre es doch in irgend einem Repo).

Gruss,
Roland
 

RME

Advanced Hacker
Hallo,

Ich habe pbzip2-1.1.4 (die neuste Version) heruntergeladen von hier:

http://www.compression.ca/pbzip2/

Die Kompilation funktioniert ohne Probleme.

('libbz2-1' und 'libbz2-devel' müssen installiert sein)

Meine CPU: Intel Quad Core i5 CPU 760 @ 2.80GHz, LGA 1156, 8MB Cache

Ich habe ein test.tar produziert; Grösse etwa 600MB und dann gzip, bzip2 und pbzip2 angewendet. Hier die Zeiten:

Code:
> ls -l test*.tar*
... 587868160 Jun  2 00:26 test.tar

Code:
> cp test.tar test_1.tar

> time gzip test_1.tar

real    0m29.497s
user    0m28.748s
sys     0m0.655s

Code:
> cp test.tar test_2.tar
> time bzip2 test_2.tar

real    5m31.277s
user    5m29.980s
sys     0m0.632s

Code:
> cp test.tar test_3.tar
> time pbzip2-1.1.4/pbzip2 test_3.tar

real    1m38.420s
user    6m16.028s
sys     0m2.939s
Es ist interessant, dass hier die 'user' und 'sys' Zeiten grösser sind als die 'real' Zeit -- vermutlich wird hier die Zeit pro CPU-core zusammengezählt.

Code:
> ls -l test*.tar*
424145008 Jun  2 00:29 test_1.tar.gz
418918537 Jun  2 00:30 test_2.tar.bz2
419126452 Jun  2 00:36 test_3.tar.bz2
587868160 Jun  2 00:26 test.tar
>

Man sieht also dass:

-1- pbzip2 mehr als dreimal schneller ist als bzip2 :D

aber :irre:

-2- gzip ist viel schneller als beide (und die Dateigrösse ist nur unwesentlich grösser)

Fazit:

gzip ist das beste bei weitem (kein Wunder also dass pbzip2 nicht "berühmt" ist :roll: ).

Gruss
Roland
 

RME

Advanced Hacker
...und dann ist da noch:

pigz (ausgesprochen: pigsii)

A parallel implementation of gzip for modern multi-processor, multi-core machines.

Heruntergeladen von:

http://www.zlib.net/pigz/

Und wie schnell? Zuerst nochmals gzip:

Code:
> cp test.tar test_1.tar
> time gzip test_1.tar

real    0m30.117s
user    0m29.342s
sys     0m0.487s

Code:
> cp test.tar test_4.tar
> time pigz-2.1.6/pigz test_4.tar

real    0m9.457s
user    0m35.240s
sys     0m0.702s

Code:
> ls -l test*.tar*
424145008 Jun  2 02:13 test_1.tar.gz
424135092 Jun  2 02:14 test_4.tar.gz
587868160 Jun  2 01:59 test.tar
>
Fazit: pigz ist dreimal schneller als gzip :D

wow! Warum ist dies nicht in einem Repo? :p

Gruss,
Roland
 
OP
generalmajor

generalmajor

Hacker
Kann man pigz auch von tar mit der Option

Code:
--use-compress-program=pigz

aufrufen, oder muss ich den Umweg über eine Pipe nehmen?
 
OP
generalmajor

generalmajor

Hacker
Zwischenzeitlich habe ich pigz zusammen mit afio erfolgreich getestet. Aufgerufen wird das Ganze über dieses Skript:

Code:
#!/bin/bash

BAKDIR=/media/techsolo
SRCDIR=/bak
LOGFILE=/var/log/backup.log

BAKFILE=$BAKDIR/$(date +%Y%m%d-%H%M).afio.gz

echo Backup from $SRCDIR to $BAKFILE started on $(date) >> $LOGFILE
find -L $SRCDIR -maxdepth 10 | afio -ZP /usr/bin/pigz -G 9 -ho $BAKFILE 2>> $LOGFILE
echo Backup from $SRCDIR to $BAKFILE stopped on $(date) >> $LOGFILE
echo  >> $LOGFILE

Für die zu sichernden Verzeichnise habe ich im Ordner /bak entsprechende Softlinks angelegt. Damit sich afio wegen der Softlinks nicht im Kreis dreht, habe ich die max. Verzeichnistiefe mit 10 angegeben. /media/techsolo ist übrigens das Backup-Ziel, eine USB-Festplatte.

Nun reduziert sich die Backup-Zeit auf meiner Vierkern-Maschine (Intel Core 2 Quad Q8200) von 13h45' auf 5h45'. Echt klasse, da ich jetzt problemlos über Nacht Daten sichern kann und das Backup nicht mehr dan halben Sonntag über läuft. :D

Danke für Eure nützlichen Tipps!
 
Oben