Na czym powinienem polegać na lbzip2 lub pbzip2?

10

Ponieważ bzip2 twierdzi, że kompresuje się najlepiej (w rozmiarze), postanowiłem go użyć. Działający serwer może zaoferować 24 (wirtualne) procesory (4 prawdziwe X5650 @ 2.67GHz) - i dlatego postanowiłem poszukać równoległych wariantów.
Korzystanie z debian stable - przepraszam, ale znalazłem najlepsze dopasowania tutaj w askubuntu - postanowiłem przyjrzeć się bliżej pbzip2 i lbzip2 .
Ale co wybrać? W rzeczywistym stabilnym pbzip2 jest w wersji 1.1.1-1 i lbzip2 w wersji 0.23-1 . To może kosmetycznie mieć tendencję do pbzip2 - ale lbzip2 mówi, że jest nawet na komputerach z pojedynczym rdzeniem. Z drugiej strony pbzip2 twierdzi, że jest w pełni kompatybilny z bzip2 v1.0.2 .
Dodatkowo mam pewne wartości czasowe dużej lokalnej pracy:
Używanie 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  

Używanie 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

Czego należy użyć? Jakie są główne różnice? W tej chwili zmierzam w stronę lbzip2 .

    
zadawane Bastian Ebeling 27.09.2011, 11:42
źródło

2 odpowiedzi

8

Oto podstawowy pomysł, jak je ocenić.

Weź duże archiwum, z którym zwykle pracujesz. Skompresuj go za pomocą bzip2, pbzip2, lbzip2. Zmierz czasy (zegara ściennego) i zapisz wszystkie wyjścia w różnych plikach. Da ci to trzy razy i trzy rozmiary plików.

Następnie należy powtórzyć wszystkie trzy pliki wyjściowe (tj. wyjścia kompresji bzip2, pbzip2, lbzip2) i rozpakować je za pomocą wszystkich trzech narzędzi (bzip2, pbzip2 i lbzip2). Da ci to jeszcze dziewięć razy.

Ponownie uruchom dwanaście testów w ramach niektórych profilerów i uzyskaj maksymalne wykorzystanie pamięci (wirtualnej i RSS) dla każdego z nich. Ponownie, da to 12 wartości. (Jeśli twój Linux jest skonfigurowany tak, aby nie było nadmiernego obciążenia, to interesuje Cię VSZ. W przeciwnym razie zależy ci na RSS).

Stwórz tabelę z 12 wierszami dla tych punktów danych - col1: 3 rozmiary skompresowane, col2: 3 czasy kompresji / 9 czasów dekompresji, col3: 12 szczytowych memów - i wybierz to, co najbardziej ci odpowiada. Powinieneś wziąć pod uwagę, jak często kompresujesz i jak często dekompresujesz.

Używam lbzip2-0.23, ale napisałem to, więc to się nie liczy.

Na koniec, bez względu na to, który z nich okaże się najlepszy dla ciebie, zawsze zapisz sumę kontrolną nieskompresowanego tarballa, a także zweryfikuj zapisany plik przed zadeklarowaniem kopii zapasowej "wykonano".

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
    
odpowiedział lacos 08.10.2011, 22:46
źródło
4

Przeprowadziłem testy porównawcze dla bzip2 vs pbzip2 i lbzip2 wraz z lzip i plzip na linku . Lubię polepszenie prędkości dla lbzip2, o ile masz wystarczająco dużo pamięci.

    
odpowiedział p4guru 22.11.2011, 06:07
źródło

Przeczytaj inne pytania na temat tagów