Jakie narzędzia kompresji są dostępne w systemie Ubuntu, które mogą korzystać z wielordzeniowego procesora.
compression
multi-core
Luis Alvarado
źródło
źródło
Odpowiedzi:
Istnieją dwa główne narzędzia.
lbzip2
apbzip2
. Są to zasadniczo różne implementacje kompresorów bzip2. Porównałem je (wynik jest uporządkowaną wersją, ale powinieneś być w stanie uruchomić polecenia)lbzip2
wydaje się być zwycięzcą losowych danych. Jest nieco mniej skompresowany, ale znacznie szybszy. YMMV.źródło
/dev/urandom
nie jest doskonałym wyborem danych wejściowych dla narzędzi do kompresji testów porównawczych, ponieważ dane losowe z definicji są nieściśliwe. To częściowo tłumaczy, dlaczego w obu przypadkach plik wyjściowy jest ~ 450 MB większy niż dane wejściowe.00000000000000000000000000000000
. Tak działa losowość;) Mówisz o średnich praktycznych. Jest mało prawdopodobne , że wygenerujesz plik 100 MB zawierający tylko zera. I zgadzam się z duchem tego, co mówisz, po prostu nie zgadzam się z „z definicji”, ponieważ nie jest to definicja (ponieważ jest niedokładna).wget http://mattmahoney.net/dc/enwik8.zip
Pobranie 96 MB (skompresowanego 21 MB) tekstu z Wikipedii. Aby uzyskać znacznie bardziej kompleksowy zestaw testów, zobacz tutaj .Cóż, słowo kluczowe było równoległe . Po wyszukaniu wszystkich równoległych narzędzi do kompresji znalazłem:
PXZ - Parallel XZ to narzędzie do kompresji, które korzysta z uruchamiania kompresji LZMA różnych części pliku wejściowego na wielu rdzeniach i procesorach jednocześnie. Jego głównym celem jest wykorzystanie wszystkich zasobów w celu przyspieszenia czasu kompresji przy minimalnym możliwym wpływie na współczynnik kompresji.
sudo apt-get install pxz
PLZIP - Lzip to bezstratny kompresor danych oparty na algorytmie LZMA, z bardzo bezpiecznym sprawdzaniem integralności i interfejsem użytkownika podobnym do gzip lub bzip2. Lzip dekompresuje prawie tak szybko jak gzip i kompresuje lepiej niż bzip2, co czyni go dobrze przystosowanym do dystrybucji oprogramowania i archiwizacji danych.
Plzip jest masowo równoległą (wielowątkową) wersją lzip używającą formatu pliku lzip; pliki produkowane przez plzip są w pełni kompatybilne z lzip.
Plzip jest przeznaczony do szybszej kompresji / dekompresji dużych plików na maszynach wieloprocesorowych, co czyni go szczególnie odpowiednim do dystrybucji dużych plików oprogramowania i archiwizacji danych na dużą skalę. Na plikach wystarczająco dużych plzip może korzystać z setek procesorów.
sudo apt-get install plzip
PIGZ - pigz, co oznacza równoległe wdrożenie GZip, jest w pełni funkcjonalnym zamiennikiem gzip, który wykorzystuje wiele procesorów i wiele rdzeni podczas kompresji danych.
sudo apt-get install pigz
PBZIP2 - pbzip2 to równoległa implementacja kompresora plików do sortowania bloków bzip2, który wykorzystuje pthreads i osiąga prawie liniowe przyspieszenie na maszynach SMP. Dane wyjściowe tej wersji są w pełni kompatybilne z bzip2 v1.0.2 (tj. Wszystko skompresowane za pomocą pbzip2 może zostać zdekompresowane za pomocą bzip2).
sudo apt-get install pbzip2
LRZIP - Wielowątkowy program do kompresji, który może osiągać bardzo wysokie współczynniki kompresji i szybkość, gdy jest używany z dużymi plikami. Używa połączonych algorytmów kompresji zpaq i lzma dla maksymalnej kompresji, lzo dla maksymalnej prędkości i redukcji redundancji dalekiego zasięgu rzip. Jest przeznaczony do skalowania wraz ze wzrostem wielkości pamięci RAM, co dodatkowo poprawia kompresję. Wybór optymalizacji rozmiaru lub prędkości pozwala na lepszą kompresję niż nawet lzma może zapewnić, lub lepszą prędkość niż gzip, ale z poziomami kompresji wielkości bzip2.
sudo apt-get install lrzip
Mały test kompresji (za pomocą testu stworzonego przez Oli):
ORYGINALNY ROZMIAR PLIKU - 100 MB
PBZIP2 - 101 MB (1% większy)
PXZ - 101 MB (1% większy)
PLZIP - 102 MB (1% większy)
LRZIP - 101 MB (1% większy)
PIGZ - 101 MB (1% większy )
Mały test porównawczy kompresji (przy użyciu pliku tekstowego):
ROZMIAR PLIKU ORYGINALNEGO - 70 KB Plik tekstowy
PBZIP2 - 16,1 KB (23%)
PXZ - 15,4 KB (22%)
PLZIP - 15,5 KB (22,1%)
LRZIP - 15,3 KB (21,8%)
PIGZ - 17,4 KB (24,8%)
źródło
lrzip
mogą byćpbzip2
na przykład nieskompresowane .Oprócz powyższego miłego podsumowania (dzięki Luis), w dzisiejszych czasach ludzie mogą również rozważyć PIXZ, który zgodnie z jego README (źródło: https://github.com/vasi/pixz - sam nie zweryfikowałem roszczeń ) ma pewne zalety w stosunku do PXZ.
Innymi słowy, PIXZ jest podobno bardziej wydajny pod względem pamięci i dysku i ma opcjonalną funkcję indeksowania, która przyspiesza dekompresję poszczególnych składników skompresowanych plików tar.
źródło
pixz
archiwa nie są zgodne ze standardowymxz
formatempxz
.pixz
może dekompresowaćxz
archiwa ixz
dekompresowaćpixz
archiwa. Jednak opcje wiersza poleceń są włączonexz
ipixz
różnią się.pixz
.Aktualizacja:
XZ Utils obsługuje kompresję wielowątkową, ponieważ wersja 5.2.0 została pierwotnie błędnie udokumentowana jako dekompresja wielowątkowa.
Na przykład:
tar -cf - source | xz --threads=0 > destination.tar.xz
źródło
export XZ_DEFAULTS="-T 0"
a następnie po prostu użyć zwykłego wywołania tar, tjtar cJf target.tar.xz source
.lzop może być również opłacalną opcją, chociaż jest jednowątkowy.
Wykorzystuje bardzo szybki algorytm kompresji lempel-ziv-oberhumer , który jest 5-6 razy szybszy niż gzip w mojej obserwacji.
Uwaga: Chociaż nie jest jeszcze wielowątkowy, prawdopodobnie przewyższy Pigz w systemach 1-4 rdzeniowych. Dlatego postanowiłem to opublikować, nawet jeśli nie odpowiada to bezpośrednio na twoje pytanie. Spróbuj, może rozwiązać problem wąskiego gardła procesora, gdy używasz tylko jednego procesora i kompresujesz gorzej. Często uważałem, że jest to lepsze rozwiązanie niż np. Pigz.
źródło
Kompresor LZMA2 w p7zip wykorzystuje oba rdzenie w moim systemie.
źródło
To nie jest tak naprawdę odpowiedź, ale myślę, że jest wystarczająco istotne, aby podzielić się moimi testami porównawczymi, porównując prędkość
gzip
ipigz
na prawdziwym HW w prawdziwym scenariuszu. Podobniepigz
jak ewolucja wielowątkowa, którą osobiście zdecydowałem się teraz zastosować.Metadane:
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
(4c / 8t) + dysk SSD NvmeXubuntu 17.10 (artful)
gzip
wersja:1.6
pigz
wersja:2.4
gzip
szybkigzip
Najlepszapigz
szybkipigz
najlepszy (niezopfli
)pigz
+zopfli
algorytmPodsumowując, nie polecałbym
zopfli
algorytmu, ponieważ kompresja zajęła olbrzymią ilość czasu dla niezbyt znaczącej ilości zaoszczędzonego miejsca na dysku.Wynikowe rozmiary plików:
źródło
Zstandard obsługuje wielowątkowość od wersji 1.2.0 ¹. Jest to bardzo szybki kompresor i dekompresor przeznaczony do zastąpienia gzip, a także może kompresować tak wydajnie - jeśli nie lepiej - jak LZMA2 / XZ na najwyższych poziomach.
Musisz skorzystać z pomysłowej lub nowszej wersji lub skompilować najnowszą wersję ze źródła, aby uzyskać te korzyści. Na szczęście nie pociąga za sobą wielu zależności.
źródło