Ponieważ bzip2 twierdzi, że najlepiej kompresuje (pod względem wielkości), postanowiłem go użyć. Działający serwer może zaoferować 24 (wirtualne) procesory (4 prawdziwe X5650 @ 2,67 GHz) - dlatego postanowiłem poszukać wariantów równoległych.
Używając debian stable
- przepraszam, ale znalazłem tutaj najlepsze mecze w askubuntu - postanowiłem przyjrzeć się bliżej pbzip2
i lbzip2
.
Ale co wybrać? W rzeczywistości stabilna pbzip2
jest w wersji 1.1.1-1
i lbzip2
wersji 0.23-1
. To może kosmetycznie mieć tendencję pbzip2
- ale lbzip2
mówi, że jest nawet szybsze na komputerach jednordzeniowych. Z drugiej strony pbzip2
twierdzi, że jest całkowicie kompatybilny bzip2 v1.0.2
.
Dodatkowo mam pewne wartości czasowe dużego lokalnego zadania:
Używanielbzip2
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
Za pomocą 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 mam tendencję do lbzip2
.
źródło
Odpowiedzi:
Oto podstawowy pomysł, jak je ocenić.
Weź duży tarball, z którym zwykle pracujesz. Skompresuj go za pomocą bzip2, pbzip2, lbzip2. Zmierz czasy (zegar ścienny) i zapisz wszystkie dane wyjściowe w różnych plikach. To da ci trzy razy i trzy rozmiary plików.
Następnie iteruj wszystkie trzy pliki wyjściowe (tj. Wyjścia kompresji bzip2, pbzip2, lbzip2) i dekompresuj je za pomocą wszystkich trzech narzędzi (bzip2, pbzip2 i lbzip2). To da ci kolejne dziewięć razy.
Ponownie uruchom dwanaście testów pod jakimś profilerem 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, by nie przesadzać, to interesujesz się VSZ. W przeciwnym razie zależy ci na RSS).
Utwórz tabelę z 12 wierszami dla tych punktów danych - skompresowane rozmiary col1: 3, czasy kompresji col2: 3/9 czasów dekompresji, memy szczytowe col3: 12 - i wybierz to, co najbardziej Ci odpowiada. Powinieneś wziąć pod uwagę, jak często kompresujesz, a jak często dekompresujesz.
Używam lbzip2-0.23, ale napisałem to, więc się nie liczy.
Wreszcie, bez względu na to, który z nich okaże się najlepszy dla Ciebie, zawsze zapisz sumę kontrolną nieskompresowanego archiwum, a także zweryfikuj zapisany plik przed zadeklarowaniem wykonania kopii zapasowej.
źródło
Zrobiłem kilka testów porównawczych dla bzip2 vs pbzip2 i lbzip2 wraz z lzip i plzip na http://vbtechsupport.com/1614/ . Lubię ulepszenia prędkości dla lbzip2, o ile masz wystarczającą ilość pamięci.
źródło