web-dev-qa-db-ja.com

最速のGZIPユーティリティ

最速のgzip(またはZip)ユーティリティを探しています。 LVMボリュームの95%が空の0から存在しているため、圧縮は非常に簡単です。私は最も速い解決策を探しています。そして、0を除いて、実際には圧縮を気にしません。

私はgzip -1gzip --fastと同じ)を知っていますが、もっと速い方法があるかどうか疑問に思っていました。

ありがとう。

編集:いくつかのテストの後、gzip -1lzop -1、およびpigz -1を互いに比較して、次の結果が得られました。

ピッグ:

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

編集2

これは私の最初の質問とは多少関係ありませんが、time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"(ブロックサイズを16Mに変更)を使用すると、時間はreal 18m22.442sに短縮されます!

18
Devator

DEFLATEから離れてもかまわない場合、lzopは、圧縮率よりも速度を優先するLZOの実装です。

個人的にはまだ使用していませんが、 parallel gzip を使用すると、処理が少し速くなると思います。

gzipの並列実装を表すpigzは、データの圧縮時に複数のプロセッサと複数のコアを活用してgzipを完全に機能的に置き換えるものです。

23
Pascal

Parallel Gzip(Pascalがリンクされている)またはParallel BZIPを試すことができます。
理論的には、BZIPはテキストの方がはるかに優れているため、 pbzip を試してみることをお勧めします。

7
Apache

Re:lzop std configの方が遅いです...調整は半分の時間で済みます。しかし、bloscと呼ばれるさらに高速な置き換えがあります。

https://github.com/FrancescAlted/blosc

うーん...これを投稿して返信を受け取るまでにかかった時間は、おそらく少なくとも時間の2倍の節約になります...カーネルを再コンパイルして2秒の起動時間から別の.1を削り落としている間に失礼します。

2
technosaurus

ディスクは30MB/sに制限されています

すべてのコンプレッサーで十分です。わずかに遅いが遍在するbzip2を使用して、ネットワーク転送を減らすこともできます。

$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

Rsyncを検討しましたか?チェックサムを実行し、違いのみをgzip圧縮します。

2
ZaB