Schnellstes GZIP-Dienstprogramm

18

Ich suche das schnellste gzip(oder zip) Dienstprogramm. Ich habe ein LVM-Volume, das zu 95% aus Leerzeichen besteht. 0Das Komprimieren ist also sehr einfach. Ich suche die schnellste Lösung und kümmere mich nicht wirklich um die Komprimierung außer den 0.

Mir ist gzip -1(genau wie gzip --fast) bewusst, aber ich habe mich gefragt, ob es eine schnellere Methode gibt.

Vielen Dank.

Edit: nach einigen Tests, ich verglichen gzip -1, lzop -1und pigz -1mit ihnen und kam zu folgenden Ergebnissen:

PIGZ:

time dd if=/dev/VPS/snap | pigz -1 | ssh backup-server "dd of=/home/backupvps/snap.pigz"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 2086.87 seconds, 25.7 MB/s
7093985+266013 records in
7163950+1 records out
3667942715 bytes (3.7 GB) copied, 2085.75 seconds, 1.8 MB/s

real    34m47.147s

LZOP:

time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1829.31 seconds, 29.3 MB/s
7914243+311979 records in
7937728+1 records out
4064117245 bytes (4.1 GB) copied, 1828.08 seconds, 2.2 MB/s

real    30m29.430s

GZIP:

time dd if=/dev/VPS/snap | gzip -1 | ssh backup-server "dd of=/home/backupvps/snap_gzip.img.gz

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1843.61 seconds, 29.1 MB/s
7176193+42 records in
7176214+1 records out
3674221747 bytes (3.7 GB) copied, 1842.09 seconds, 2.0 MB/s

real    30m43.846s

Bearbeiten 2 :

Dies hat etwas nichts mit meiner anfänglichen Frage time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"zu tun , aber mit (Blockgröße geändert auf 16M) wird die Zeit auf reduziert real 18m22.442s!

Devator
quelle
1
Seien Sie vorsichtig: Es ist etwas unfair, timeso zu verwenden. Der Durchsatz des verwendeten dd pigzist niedriger als die beiden anderen.
Henk
@ Devator: Wenn man sich die Zeitabläufe ansieht, kann man schließen, dass das Pushen von Bytes durch den verschlüsselten SSH-Tunnel momentan der Engpass ist. Haben Sie versucht, ssh mit dem Flag "-c" (Komprimierung) zu verwenden und den Vorkomprimierer aus der Gleichung herauszulassen? Sie könnten auch zu einem schnelleren Verschlüsselungsalgorithmus wechseln. abgesehen davon: re-benchmarking ohne den ssh-tunnel (
zb
Könnten Sie als Randnotiz eine Sparse-Datei verwenden ? Dann würden die Nullen keinen Platz auf der Festplatte belegen. Ihre Komprimierung wäre auch schneller, da die Nullen vom Dateisystemtreiber interpoliert würden (und nicht von der Festplatte gelesen werden müssten.)
Li-aung Yip
@ Li-aungYip Ich glaube nicht, da die "Dateien" LVM-Volumes sind.
Devator
Ah ich sehe. Mach weiter!
Li-aung Yip

Antworten:

14

Wenn es Ihnen nichts ausmacht, sich von DEFLATE zu entfernen, lzophandelt es sich um eine Implementierung von LZO, bei der die Geschwindigkeit der Komprimierungsrate vorgezogen wird.

Ignacio Vazquez-Abrams
quelle
1
oder .. bissig: code.google.com/p/snappy
akira
Danke, ich habe festgestellt lzop, dass ich in meinem Szenario am schnellsten bin. Es ist schneller als pigzirgendwie (wahrscheinlich aufgrund der vielen Nullen).
Devator
23

Obwohl ich es persönlich noch nicht benutzt habe, denke ich, dass die Verwendung von parallelem gzip die Dinge etwas beschleunigen könnte:

pigz, das für die parallele Implementierung von gzip steht, ist ein voll funktionsfähiger Ersatz für gzip, der beim Komprimieren von Daten mehrere Prozessoren und mehrere Kerne ausnutzt.

Pascal
quelle
1
Ich benutze es routinemäßig und empfehle Pigz auf jeden Fall, wenn mehrere Kerne verfügbar sind. Abgesehen von der Änderung der Komprimierungsstufe ist dies die bei weitem am leichtesten zugängliche und einfachste Möglichkeit, die Komprimierung zu beschleunigen.
Jgrundstad
3
Die Seite sieht ein bisschen seltsam aus. Aber lassen Sie sich nicht täuschen, pigz wird von einem der Entwickler von gzip und zlib, Mark Adler, geschrieben.
So_mv
Sieht aus wie das Projekt an dieser Stelle abgebrochen wird.
AlexLordThorsen
Ich halte es lieber für "stabil". Es wird nicht oft aktualisiert, aber es wird aktualisiert.
Alan De Smet
7

Sie können Parallel Gzip (Pascal hat es eingebunden) oder Parallel BZIP ausprobieren.
Theoretisch ist BZIP für Text viel besser, daher möchten Sie vielleicht pbzip ausprobieren .

Apache
quelle
2

Ihre Festplatte ist auf 30 MB / s begrenzt

Alle Kompressoren arbeiten gut genug. Sie können die Netzwerkübertragung sogar verringern, indem Sie etwas langsameres, aber allgegenwärtiges bzip2 verwenden.

$dd if=/dev/zero bs=2M count=512 | pigz -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 9.12679 s, 118 MB/s
8192+7909 records in
9488+1 records out
4857870 bytes (4.9 MB) copied, 9.13024 s, 532 kB/s
$dd if=/dev/zero bs=2M count=512 | bzip2 -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 37.4471 s, 28.7 MB/s
12+1 records in
12+1 records out
6533 bytes (6.5 kB) copied, 37.4981 s, 0.2 kB/s
$dd if=/dev/zero bs=2M count=512 | gzip -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 14.305 s, 75.1 MB/s
9147+1 records in
9147+1 records out
4683762 bytes (4.7 MB) copied, 14.3048 s, 327 kB/s

Haben Sie über Rsync nachgedacht? Es wird nur die Prüfsumme und dann der Unterschied gezippt.

ZaB
quelle
1
Meine Festplatte ist nicht auf 30 MB / s begrenzt. Ich habe gerade Ihren Test durchgeführt: pigz -1: 1073741824 bytes (1.1 GB) copied, 8.6779 seconds, 124 MB/sund gzip -1: 1073741824 bytes (1.1 GB) copied, 11.6724 seconds, 92.0 MB/s. Ich habe über Rsync nachgedacht, aber das würde die Datei differenziert prüfen und es würde wahrscheinlich nicht helfen, da sich die meiste Zeit viel geändert hat.
Devator
Wenn Sie bei der Übertragung von Nullen sind, sehen Sie, wie beeindruckend die bzip2-Codierung im Vergleich aussieht. Auf welcher Seite messen Sie die Geschwindigkeit? 4 Mbit / s Schweinchen sind möglicherweise zu viel für eine normale DSL-Leitung. Es wird noch schlimmer, wenn Ihre Festplatte so schnell ist.
ZaB
2

Re: lzop es ist langsamer in seiner Standardkonfiguration ... Tweaking kann die halbe Zeit dauern. Es gibt jedoch einen noch schnelleren Ersatz namens blosc:

https://github.com/FrancescAlted/blosc

Hmm ... Die Zeit, die benötigt wurde, um dies zu veröffentlichen und Antworten zu erhalten, ist wahrscheinlich mindestens doppelt so lang wie die Zeitersparnis, die Sie erhalten.

Technosaurus
quelle