lbzip2またはpbzip2は何に依存する必要がありますか?


10

bzip2が(サイズで)最適に圧縮すると主張しているので、それを使用することにしました。稼働中のサーバーは24個の(仮想)CPU(4個の実際のX5650 @ 2.67GHz)を提供できるため、私はパラレルバリアントを探すことにしました。
使用debian stable-申し訳ありませんが、ここaskubuntuで最も一致するものを見つけました-とをさらに詳しく調べることにpbzip2しましたlbzip2
しかし、何を選択しますか?実際の安定pbzip2版はバージョン1.1.1-1lbzip2バージョンがあり0.23-1ます。それかもしれないが、化粧品への傾向があるpbzip2-しかし、lbzip2それはより速く、シングルコアのコンピュータ上にもあると言います。一方、pbzip2と完全に互換性があると主張していますbzip2 v1.0.2
さらに、私は大きな地元の仕事のいくつかのタイミング値が設定されています
使用しますlbzip2

Command being timed: "tar -cjf /tmp/mapleTAsicherung.lbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
    User time (seconds): 2134.32
    System time (seconds): 39.24
    Percent of CPU this job got: 2099%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 1:43.51
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 1509088
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 1054467
    Voluntary context switches: 153901
    Involuntary context switches: 235285
    Swaps: 0
    File system inputs: 0
    File system outputs: 3460632
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0  

使用する pbzip2

    Command being timed: "tar -cjf /tmp/mapleTAsicherung.pbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
    User time (seconds): 3158.18
    System time (seconds): 59.80
    Percent of CPU this job got: 2095%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 2:33.56
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 1436320
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 477683
    Voluntary context switches: 151326
    Involuntary context switches: 339246
    Swaps: 0
    File system inputs: 0
    File system outputs: 3460536
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

何を使うべきですか?主な違いは何ですか?現在私はに向いていlbzip2ます。


1
クイックノート:通常の bzip2で圧縮されたファイルは、pbzip2で解凍するとパフォーマンスが向上しません。ただし、pbzip2は下位互換性をアーカイブします。これらは、シングルスレッドまたは並列化されたユーティリティで解凍できます。
STW 2015

回答:


11

これらを評価する方法の基本的な考え方を以下に示します。

通常使用する種類の大きなtarballを用意してください。bzip2、pbzip2、lbzip2で圧縮します。(壁時計)時間を測定し、すべての出力を別のファイルに保存します。これにより、3倍のサイズと3つのファイルサイズが得られます。

次に、3つすべての出力ファイル(つまり、bzip2、pbzip2、lbzip2の圧縮出力)を反復処理し、3つすべてのユーティリティ(bzip2、pbzip2、lbzip2)でそれぞれを解凍します。これにより、さらに9回得られます。

プロファイラーの下で12のテストを再実行し、それぞれのピークメモリ使用量(仮想およびRSS)を取得します。この場合も、12個の値が生成されます。(Linuxがオーバーコミットしないように構成されている場合は、VSZに関心があります。それ以外の場合は、RSSに関心があります)。

これらのデータポイントの12行のテーブルを作成します-col1:3圧縮サイズ、col2:3圧縮時間/ 9解凍時間、col3:12ピークメモリ-そして、あなたに最適なものを選択してください。圧縮の頻度と解凍の頻度を考慮に入れる必要があります。

私はlbzip2-0.23を使用していますが、それを書いたので数えられません。

最後に、どちらが最適であるかに関わらず、常に圧縮されていない tarballのチェックサムを保存し、バックアップが「完了」であることを宣言する前に、保存したファイルを確認してください。

FILES=...
OUTDIR=/mnt/archive
BZ2_UTIL=...

(
  tar -c -- $FILES \
  | tee >(sha256sum >"$OUTDIR"/myfiles.tar.sha256) \
  | pv -c -N plain 2>/dev/tty \
  | "$BZ2_UTIL" \
  | pv -c -N compr 2>/dev/tty \
  > "$OUTDIR"/myfiles.tar.bz2
) 2>"$OUTDIR"/myfiles.err

"$BZ2_UTIL" -dc -- "$OUTDIR"/myfiles.tar.bz2 \
| sha256sum -c -- "$OUTDIR"/myfiles.tar.sha256

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