Bzip2は(サイズで)最適に圧縮すると主張しているため、私はそれを使用することにしました。稼働中のサーバーは24個の(仮想)CPU(4個の実際のX5650 @ 2.67GHz)を提供できるため、並列バリアントを探すことにしました。debian stable
の使用-申し訳ありませんが、askubuntuで最適な一致が見つかりました-pbzip2
とlbzip2
を詳しく調べることにしました。
しかし、何を選択しますか?実際の安定版では、pbzip2
はバージョン1.1.1-1
にあり、lbzip2
はバージョン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
の傾向があります。
それらを評価する方法の基本的なアイデアを次に示します。
普段使っているような大きな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を使用していますが、書きましたので、数えません。
最後に、どちらが最適であるかに関係なく、alwaysncompressed 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
http://vbtechsupport.com/1614/ で、bzip2とpbzip2およびlbzip2とlzipおよびplzipの比較ベンチマークを行いました。十分なメモリがある限り、lbzip2の速度向上が好きです。