Cosa devo fare affidamento su lbzip2 o pbzip2?


10

Dato che bzip2 afferma di comprimere meglio (in termini di dimensioni), ho deciso di usarlo. Il server funzionante può offrire 24 CPU (virtuali) (4 X5650 reali a 2,67 GHz) - e quindi ho deciso di cercare varianti parallele.
Usando debian stable- scusa, ma ho trovato le migliori corrispondenze qui in askubuntu - ho deciso di dare un'occhiata più da vicino pbzip2e lbzip2.
Ma cosa selezionare? In realtà stable pbzip2è nella versione 1.1.1-1e lbzip2nella versione 0.23-1. Ciò potrebbe esteticamente tendere a pbzip2- ma lbzip2dice che è anche sui computer single-core più velocemente. D'altra parte pbzip2afferma di essere completamente compatibile con bzip2 v1.0.2.
Inoltre ho alcuni valori temporali di un grosso lavoro locale:
usarelbzip2

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  

utilizzando 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

Cosa si dovrebbe usare? Quali sono le principali differenze? Al momento tendo verso lbzip2.


1
Nota rapida: i file compressi con il normale bzip2 non vedranno un aumento delle prestazioni quando decompressi con pbzip2. Tuttavia pbzip2 archivia un retrocompatibile: possono essere decompressi con un'utilità a thread singolo o in parallelo.
STW,

Risposte:


11

Ecco un'idea di base su come valutarli.

Prendi un grande tarball del tipo con cui di solito lavori. Comprimilo con bzip2, pbzip2, lbzip2. Misurare i tempi (orologio da parete) e salvare tutti gli output in file diversi. Questo ti darà tre volte e tre dimensioni di file.

Quindi scorrere su tutti e tre i file di output (ad es. Le uscite di compressione di bzip2, pbzip2, lbzip2) e decomprimere ciascuno con tutte e tre le utilità (bzip2, pbzip2 e lbzip2). Questo ti darà ulteriori nove volte.

Riesegui i dodici test con alcuni profiler e ottieni un picco di utilizzo della memoria (virtuale e RSS) per ciascuno. Ancora una volta, questo produrrà 12 valori. (Se il tuo Linux è configurato per non sovraccaricare, allora sei interessato a VSZ. Altrimenti ti interessa RSS.

Crea una tabella con 12 righe per questi punti di dati - col1: 3 dimensioni compresse, col2: 3 tempi di compressione / 9 tempi di decompressione, col3: 12 mem di picco - e scegli quello più adatto a te. Dovresti considerare la frequenza con cui comprimi rispetto a quanto spesso decomprimi.

Uso lbzip2-0.23, ma l'ho scritto, quindi non conta.

Infine, indipendentemente da quale sia la migliore per te, salva sempre un checksum del tarball non compresso , inoltre verifica il tuo file salvato prima di dichiarare "eseguito" il backup.

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

Ho fatto alcuni benchmark comparativi per bzip2 vs pbzip2 e lbzip2 insieme a lzip e plzip su http://vbtechsupport.com/1614/ . Mi piacciono gli aumenti di velocità per lbzip2 fintanto che hai abbastanza memoria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.