На що я повинен покладатися на lbzip2 або pbzip2?


10

Оскільки bzip2 стверджує, що найкраще (за розміром) стискати, я вирішив його використовувати. Працюючий сервер може запропонувати 24 (віртуальні) процесори (4 реальні X5650 @ 2,67 ГГц) - і тому я вирішив шукати паралельні варіанти.
Використовуючи 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.


1
Швидка примітка: файли, стиснуті звичайним bzip2, не побачать підвищення продуктивності при декомпресії за допомогою pbzip2. Однак pbzip2 архівує зворотну сумісність - їх можна декомпресувати за допомогою однопотокової або паралелізованої утиліти.
STW

Відповіді:


11

Ось основна ідея, як їх оцінити.

Візьміть великий тарбол такого типу, з яким зазвичай працюєте. Стисніть його за допомогою bzip2, pbzip2, lbzip2. Виміряйте (настінний годинник) разів і збережіть усі результати у різних файлах. Це дасть вам тричі та три розміри файлів.

Потім повторіть всі три вихідні файли (тобто результати стиснення bzip2, pbzip2, lbzip2) та розпакуйте кожен із усіма трьома утилітами (bzip2, pbzip2 та lbzip2). Це дасть вам ще дев'ять разів.

Перезапустіть дванадцять тестів під деяким профілером і отримайте пікове використання пам'яті (віртуальної та RSS) для кожного. Знову ж таки, це дасть 12 значень. (Якщо ваш Linux налаштований на відсутність перевиконання, то вас цікавить VSZ. Інакше ви дбаєте про RSS).

Складіть таблицю з 12 рядками для цих точок даних - col1: 3 розміри стиснення, col2: 3 рази стиснення / 9 разів декомпресії, col3: 12 пікових пам’яті - і виберіть те, що вам найбільше підходить. Ви повинні враховувати, як часто ви стискаєте та як часто віджимаєте.

Я використовую lbzip2-0.23, але я написав його, тому він не рахується.

Нарешті, незалежно від того, який із них виявиться найкращим, завжди зберігайте контрольну суму нестисненого тарболу, а також підтверджуйте збережений файл, перш ніж оголосити резервну копію "виконаною".

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

4

Я зробив кілька показників порівняння для bzip2 проти pbzip2 та lbzip2, а також lzip та plzip на веб-сайті http://vbtechsupport.com/1614/ . Мені подобається поліпшення швидкості для lbzip2, поки у вас є достатня кількість пам'яті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.