Worauf sollte ich mich bei lbzip2 oder pbzip2 verlassen?

10

Da bzip2 behauptet, am besten (in der Größe) zu komprimieren, habe ich mich für die Verwendung entschieden. Der funktionierende Server kann 24 (virtuelle) CPUs anbieten (4 echte X5650 bei 2,67 GHz) - und deshalb habe ich mich für parallele Varianten entschieden.
Mit debian stable- sorry, aber ich fand besten Matches hier in askubuntu - ich einen genaueren Blick nehmen entschieden pbzip2und lbzip2.
Aber was soll ich auswählen? Im aktuellen Stall pbzip2ist in Version 1.1.1-1und lbzip2in Version 0.23-1. Das mag kosmetisch dazu neigen pbzip2- lbzip2sagt aber, dass es sogar auf Single-Core-Computern schneller geht. Auf der anderen Seite pbzip2behauptet, vollständig kompatibel zu sein bzip2 v1.0.2.
Zusätzlich habe ich einige Timing-Werte eines großen lokalen Jobs:
Usinglbzip2

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  

Verwenden von 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

Was soll man verwenden? Was sind die Hauptunterschiede? Im Moment tendiere ich dazu lbzip2.

Bastian Ebeling
quelle
1
Kurzer Hinweis: Dateien, die mit dem regulären bzip2 komprimiert wurden, werden beim Dekomprimieren mit pbzip2 nicht leistungssteigert. Pbzip2 archiviert jedoch abwärtskompatibel - sie können entweder mit einem Single-Threaded-Dienstprogramm oder einem parallelisierten Dienstprogramm dekomprimiert werden.
STW

Antworten:

11

Hier ist eine grundlegende Idee, wie man sie bewertet.

Nehmen Sie einen großen Tarball, mit dem Sie normalerweise arbeiten. Komprimieren Sie es mit bzip2, pbzip2, lbzip2. Messen Sie die (Wanduhr-) Zeiten und speichern Sie alle Ausgaben in verschiedenen Dateien. Dadurch erhalten Sie drei und drei Dateigrößen.

Durchlaufen Sie dann alle drei Ausgabedateien (dh die Komprimierungsausgaben von bzip2, pbzip2, lbzip2) und dekomprimieren Sie sie jeweils mit allen drei Dienstprogrammen (bzip2, pbzip2 und lbzip2). Dies gibt Ihnen weitere neun Mal.

Führen Sie die zwölf Tests unter einem Profiler erneut aus und erhalten Sie jeweils eine maximale Speichernutzung (virtuell und RSS). Dies ergibt wiederum 12 Werte. (Wenn Ihr Linux so konfiguriert ist, dass kein Überbeanspruchen erfolgt, interessieren Sie sich für VSZ. Andernfalls interessiert Sie RSS.)

Erstellen Sie eine Tabelle mit 12 Zeilen für diese Datenpunkte - Spalte 1: 3 komprimierte Größen, Spalte 2: 3 Komprimierungszeiten / 9 Dekomprimierungszeiten, Spalte 3: 12 Spitzenmems - und wählen Sie die für Sie am besten geeignete aus. Sie sollten berücksichtigen, wie oft Sie komprimieren und wie oft Sie dekomprimieren.

Ich benutze lbzip2-0.23, aber ich habe es geschrieben, also zählt es nicht.

Unabhängig davon, welches für Sie am besten geeignet ist, speichern Sie immer eine Prüfsumme des unkomprimierten Tarballs und überprüfen Sie Ihre gespeicherte Datei, bevor Sie die Sicherung für "erledigt" erklären.

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
quelle
4

Ich habe einige Vergleichsbenchmarks für bzip2 mit pbzip2 und lbzip2 zusammen mit lzip und plzip unter http://vbtechsupport.com/1614/ durchgeführt . Ich mag die Geschwindigkeitsverbesserungen für lbzip2, solange Sie genug Speicher haben.

p4guru
quelle