Apa yang harus saya andalkan pada lbzip2 atau pbzip2?

10

Sebagai klaim bzip2 untuk kompres terbaik (dalam ukuran), saya memutuskan untuk menggunakannya. Server yang berfungsi dapat menawarkan 24 (virtual) CPU (4 X5650 nyata @ 2.67GHz) - dan karenanya saya memutuskan untuk mencari varian paralel.
Menggunakan debian stable- maaf, tapi saya menemukan yang paling cocok di sini di askubuntu - Saya memutuskan untuk melihat lebih dekat pbzip2dan lbzip2.
Tapi apa yang harus dipilih? Dalam stabil sebenarnya pbzip2adalah dalam versi 1.1.1-1dan lbzip2versi 0.23-1. Itu mungkin cenderung secara kosmetik pbzip2- tetapi lbzip2mengatakan itu bahkan pada komputer single-core lebih cepat. Di sisi lain pbzip2mengklaim sepenuhnya kompatibel dengan bzip2 v1.0.2.
Selain itu saya punya beberapa nilai waktu dari pekerjaan lokal besar:
Menggunakanlbzip2

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  

Menggunakan 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

Apa yang harus digunakan? Apa perbedaan utama? Saat ini saya cenderung ke arah lbzip2.

Bastian Ebeling
sumber
1
Catatan cepat: file yang dikompres dengan bzip2 biasa tidak akan melihat peningkatan kinerja ketika didekompresi dengan pbzip2. Namun pbzip2 mengarsipkan kompatibel dengan mundur - pbzip2 dapat didekompresi dengan utilitas berulir tunggal atau paralel.
STW

Jawaban:

11

Inilah ide dasar bagaimana cara mengevaluasinya.

Mengambil tarball besar dari jenis yang biasanya Anda kerjakan. Kompres dengan bzip2, pbzip2, lbzip2. Ukur waktu (jam dinding) dan simpan semua output dalam file yang berbeda. Ini akan memberi Anda tiga kali dan tiga ukuran file.

Kemudian ulangi ketiga file output (mis. Output kompresi bzip2, pbzip2, lbzip2), dan dekompres masing-masing dengan ketiga utilitas (bzip2, pbzip2, dan lbzip2). Ini akan memberi Anda sembilan kali lebih jauh.

Jalankan kembali dua belas tes di bawah beberapa profiler dan dapatkan penggunaan memori puncak (virtual dan RSS) untuk masing-masing. Sekali lagi, ini akan menghasilkan 12 nilai. (Jika Linux Anda dikonfigurasi untuk tidak overcommit, maka Anda tertarik pada VSZ. Kalau tidak, Anda peduli dengan RSS).

Buat tabel dengan 12 baris untuk titik data ini - col1: 3 ukuran terkompresi, col2: 3 kali kompresi / 9 kali dekompresi, col3: 12 mems puncak - dan pilih yang paling cocok untuk Anda. Anda harus memperhitungkan seberapa sering Anda mengompres vs seberapa sering Anda melakukan dekompresi.

Saya menggunakan lbzip2-0.23, tapi saya menulisnya, jadi tidak masuk hitungan.

Akhirnya, apa pun yang terbukti terbaik untuk Anda, selalu simpan checksum dari tarball yang tidak dikompresi , plus verifikasi file yang disimpan sebelum menyatakan cadangan "selesai".

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
laco
sumber
4

Saya melakukan beberapa perbandingan perbandingan untuk bzip2 vs pbzip2 dan lbzip2 bersama dengan lzip dan plzip di http://vbtechsupport.com/1614/ . Saya menyukai peningkatan kecepatan untuk lbzip2 selama Anda memiliki cukup memori.

p4guru
sumber