gzip圧縮を高速化


15

gzipプロセスをスピードアップすることは可能ですか?

私は使っています

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz

、ディレクトリにバックアップAデータベースへ$BACKUP_DIR

マンページは言う:

-#--fast --best
指定された数字#を使用して圧縮の速度を調整します。-1または--fastは最速の圧縮方式(より低い圧縮)を示し、-9または--bestは最も遅い圧縮方式を示します(最高の圧縮)。デフォルトの圧縮レベルは-6です(つまり、速度を犠牲にして高圧縮に偏っています)。

  • 使用することはどれくらい効果的--fastですか?
  • これは、現代のコンピューターのCPU使用率を効果的に低下させていますか?

私のテスト結果

私は加速に気付きませんでした:

  • 7分47秒(デフォルトの比率で-6
  • 8分36秒(比率--fast(= 9)を使用)

それで、高速圧縮を使用するのにさらに時間がかかるようです?

圧縮率が高い場合のみ、実際に速度が低下します。

  • 11分57秒(比率--best(= 1)を使用)

アイデアを取得した後、lzop私もそれをテストしましたが、実際には高速です:

  • 6分、14秒 lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo


CPU時間または全体(クロック)時間を心配していますか?-ベストは9、
ファスト

3
場合はgzip -1十分に速くないが、使用lzop
ステファンChazelas

1
あり、lz4さらに速くしている。このベンチマークを参照してください。しかし、lzopとlz4はさらに多くのメモリを必要とするようです。私の1GB RAMシングルコアでは、いくつかの大きなデータベースを圧縮するときにlz4がgzipの30倍のメモリを圧縮で使用するのは問題になりますか?
rubo77

lz4はそれほど多くのメモリを必要としません。lz4cユーティリティを使用している場合、ほとんどすべてのメモリがI / Oバッファに割り当てられます。これを減らすには、より小さいバッファーを使用します(64KBバッファーのオプション-B4)。バッファが小さいと圧縮率も低下するため、チェーンブロック圧縮を有効にすると便利です(オプション-BD)。参照:fastcompression.blogspot.fr/2013/08/…–
シアン

回答:


19

pigzを使用するマルチコアマシンがある場合、従来のgzipよりもはるかに高速です。

pigzは、gzipの並列実装の略で、データを圧縮する際に複数のプロセッサと複数のコアを活用してgzipを完全に機能的に置き換えるものです。pigzはMark Adlerによって作成され、zlibおよびpthreadライブラリを使用します。

Pigzは、gzipのドロップイン代替として使用できます。圧縮ではなく、圧縮のみを並列化できることに注意してください。

pigzを使用すると、コマンドラインは次のようになります。

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz

これにより、シングルコアでのプロセスも高速化されますか?
rubo77

@ rubo77-いいえ、これは複数のコアにわたる圧縮をファンアウトします。
SLM

pigzCPUの使用率を増加させるが、それは、マルチプロセッサ上でかかるクロックタイムを下げる
ステファンChazelas

確かに、それはしばしば望ましいことです。通常、(ハードウェアに応じて)gzip圧縮はCPUバインド(シングルスレッドパフォーマンス)であり、pizz圧縮は多くの場合IOバインドです。
マルコ

5

からman gzip

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi‐
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).

3

データベースのロックの問題のために高速にする必要があり、データを一時的に解凍するのに十分な高速/大容量のディスクがある場合は、代わりにこのメソッドの使用を検討できます。

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &

つまり、最初にバックアップを保存し(ディスクが高速でCPUが遅い場合はバックアップをgzipするよりも高速です)、gzipをバックグラウンドで実行します。

これにより、圧縮にかかる時間(直接)は問題にならないため、より良い圧縮アルゴリズムを使用できるようになる場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.