¿Qué debo confiar en lbzip2 o pbzip2?

10

Como bzip2 afirma comprimir mejor (en tamaño), decidí usarlo. El servidor de trabajo puede ofrecer 24 CPU (virtuales) (4 X5650 reales a 2,67 GHz), por lo que decidí buscar variantes paralelas.
Usando debian stable- lo siento, pero encontré las mejores coincidencias aquí en askubuntu - decidí echar un vistazo más de cerca pbzip2y lbzip2.
¿Pero qué seleccionar? En estable real pbzip2está en versión 1.1.1-1y lbzip2en versión 0.23-1. Eso podría tender cosméticamente pbzip2, pero lbzip2dice que incluso es más rápido en computadoras de un solo núcleo. Por otro lado, pbzip2afirma ser completamente compatible con bzip2 v1.0.2.
Además, tengo algunos valores de tiempo de un gran trabajo local:
usarlbzip2

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  

Utilizando 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

¿Qué se debe usar? ¿Cuáles son las principales diferencias? Por el momento tiendo hacia lbzip2.

Bastian Ebeling
fuente
1
Nota rápida: los archivos comprimidos con el bzip2 normal no verán un aumento de rendimiento cuando se descomprimen con pbzip2. Sin embargo, pbzip2 archiva una compatibilidad con versiones anteriores: se pueden descomprimir con una utilidad de un solo subproceso o paralelizada.
STW

Respuestas:

11

Aquí hay una idea básica de cómo evaluarlos.

Tome un gran tarball del tipo con el que generalmente trabaja. Comprímalo con bzip2, pbzip2, lbzip2. Mida los tiempos (reloj de pared) y guarde todas las salidas en diferentes archivos. Esto le dará tres veces y tres tamaños de archivo.

Luego, repita los tres archivos de salida (es decir, las salidas de compresión de bzip2, pbzip2, lbzip2) y descomprima cada uno con las tres utilidades (bzip2, pbzip2 y lbzip2). Esto te dará nueve veces más.

Vuelva a ejecutar las doce pruebas con un generador de perfiles y obtenga un uso máximo de memoria (virtual y RSS) para cada una. Nuevamente, esto producirá 12 valores. (Si su Linux está configurado para no comprometerse demasiado, entonces está interesado en VSZ. De lo contrario, le interesará RSS).

Haga una tabla con 12 filas para estos puntos de datos (col1: 3 tamaños comprimidos, col2: 3 tiempos de compresión / 9 tiempos de descompresión, col3: 12 mems pico) y elija el que más le convenga. Debe tener en cuenta la frecuencia con la que se comprime frente a la frecuencia con la que se descomprime.

Uso lbzip2-0.23, pero lo escribí, por lo que no cuenta.

Finalmente, no importa cuál sea el mejor para usted, guarde siempre una suma de comprobación del archivo tar sin comprimir , además verifique su archivo guardado antes de declarar que la copia de seguridad está "hecha".

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
lacos
fuente
4

Hice algunos puntos de referencia de comparación para bzip2 vs pbzip2 y lbzip2 junto con lzip y plzip en http://vbtechsupport.com/1614/ . Me gustan las mejoras de velocidad para lbzip2 siempre que tenga suficiente memoria.

p4guru
fuente