Stále více tar archivů místo komprese použijte xz formát založený na LZMA2 místo tradičního bzip2(bz2) komprese. kernel.org ve skutečnosti vydal pozdní „ Good-bye bzip2 oznámení, 27. prosince 2013 , což znamená, že zdroje jádra budou od tohoto okamžiku vydávány ve formátu tar.gz i tar.xz – a na hlavní stránce webu co je přímo nabídnuto je v tar.xz.

Existují nějaké konkrétní důvody vysvětlující, proč se to děje, a jaká je relevance gzip v tomto kontextu?

Odpověď

Pro distribuci archivů přes internet, jsou obecně prioritou následující věci:

  1. Kompresní poměr (tj. jak malý kompresor vytváří data);
  2. dekompresní čas (požadavky CPU) ;
  3. požadavky na dekompresní paměť; a
  4. kompatibilita (jak široký je dekompresní program)

kompresní paměť & CPU požadavky nejsou velmi důležité, protože k tomu můžete použít velký rychlý stroj a musíte to udělat jen jednou.

Ve srovnání s bzip2 má xz lepší kompresní poměr a kratší (lepší) dekompresní dobu. Při dekompresi [1] však při obvyklých nastaveních komprese vyžaduje více paměti a je poněkud méně rozšířená. Gzip používá méně paměti než kterýkoli z nich.

Takže jsou zveřejňovány archivy ve formátu gzip i xz, což vám umožňuje vybrat:

  • Potřebujete dekomprimovat na počítači s velmi omezená paměť (< 32 MB): gzip. Vzhledem k tomu není příliš pravděpodobné, když mluvíme o zdrojích jádra.
  • Potřebujete dekomprimovat minimální dostupné nástroje: gzip
  • Chcete ušetřit čas stahování a / nebo šířku pásma: xz

Neexistuje skutečně realistická kombinace faktorů, které by vás vedly k výběru bzip2. Takže je vyřazován.

Podíval jsem se na komprese v příspěvku na blogu . Nepokoušel jsem se replikovat výsledky a mám podezření, že se některé z nich změnily (většinou očekávám, že xz se zlepšil, protože je nejnovější.)

(Existují některé konkrétní scénáře, kde může být lepší implementace bzip2 než xz: bzip2 dokáže komprimovat soubor se spoustou nul a sekvencí DNA genomu lépe než xz. Novější verze xz nyní mají (volitelný) režim bloku, který umožňuje data zotavení po bodu poškození a paralelní komprese a [teoreticky] dekomprese. Dříve je nabízel pouze bzip2. [2] Nic z toho však není pro distribuci jádra relevantní)


1: Ve velikosti archivu je xz -3 přibližně bzip -9. Pak xz používá k dekompresi méně paměti. xz -9 (jako např. použitý pro linuxové jádro tarballs) používá mnohem více než bzip -9. (A dokonce i xz -0 potřebuje více než gzip -9).

2: F21 System Wide Change: lbzip2 jako výchozí implementace bzip2

Komentáře

  • Libovolný komentář k tématu odolnost proti chybám nebo je to něco, co ‚ vždy implementováno úplně mimo kompresní algoritmy?
  • @illumin É odolnost ‚ nelze poskytnout bez obětování kompresního poměru. Je to ‚ ortogonální problém, a přestože existují nástroje jako Parchive, pro distribuci chyb jádra TCP ‚ s chybou je práce stejná dobře.
  • @illumin É Tolerance chyb (za předpokladu, že máte na mysli něco podobného par2) normálně není ‚ distribuce archivů přes internet. Stahování je považováno za dostatečně spolehlivé (a pokud bylo poškozeno, můžete jej pouze znovu stáhnout). Často se používají kryptografické hashe a podpisy, které detekují poškození i manipulaci. Existují kompresory, které poskytují větší odolnost proti chybám, i když za cenu kompresního poměru. Zdá se, že nikdo nenalezl kompromis, který by stál za stahování HTTP nebo FTP.
  • xz používá k dekompresi méně paměti.
  • @Mike Změnilo se to od doby, kdy jsem to napsal? Poznámka pod čarou vysvětluje zejména využití paměti.

Odpověď

Nejprve tato otázka přímo nesouvisí do tar. Tar právě vytvoří nekomprimovaný archiv, komprese se poté použije později.

Je známo, že Gzip je ve srovnání s LZMA2 a bzip2 relativně rychlý. Pokud záleží na rychlosti, gzip (zejména vícevláknová implementace pigz ) je často dobrým kompromisem mezi rychlostí komprese a kompresním poměrem. I když existují alternativy, pokud je problém s rychlostí (např. LZ4).

Pokud je však požadován vysoký kompresní poměr, LZMA2 porazí bzip2 téměř ve všech aspektech. Rychlost komprese je často nižší, ale dekomprimuje se mnohem rychleji a poskytuje mnohem lepší kompresní poměr za cenu vyššího využití paměti.

Není příliš mnoho důvodů používat bzip2, kromě zpětné kompatibility. LZMA2 byl navíc navržen s ohledem na multithreading a mnoho implementací ve výchozím nastavení využívá vícejádrové procesory (bohužel xz v systému Linux to zatím nedělá). To dává smysl, protože rychlost hodin se již nebude zvyšovat, ale počet jader se zvýší.

Existuje vícevláknová bzip2 implementace (např. pbzip ), ale ve výchozím nastavení se často nenainstalují. Všimněte si také, že vícevláknové bzip2 skutečně se vyplatí pouze při komprimaci , zatímco dekomprese používá jedno vlákno, pokud byl soubor komprimován pomocí jediného vlákna bzip2, na rozdíl od LZMA2. Paralelní bzip2 varianty mohou využívat vícejádrové procesory pouze v případě, že byl soubor komprimován pomocí paralelní bzip2 verze, což často není pravda.

Komentáře

  • No některé dehty využívají možnost z.
  • “ speed “ přináší zmatenou odpověď, měli byste odkazovat na rychlost komprese nebo na rychlost dekomprese. Ani pixz, pbzi Ve výchozím nastavení jsou nainstalovány p2 nebo pigz (nebo jsou použity tar bez příznaku -I), ale pixz a pbzip2 zrychlují kompresi a dekompresi a pigz je jen pro kompresi.
  • @Tobu xz bude ve výchozím nastavení vícevláknový, takže v budoucnu nebude vyžadována žádná pixz instalace. Na některých platformách xz je již vlákno podporováno. Zatímco bzip2 pravděpodobně nebude vícevláknový, protože formát nebyl ‚ navržen s ohledem na multithreading. pbzip2 navíc zrychluje dekompresi pouze v případě, že byl soubor komprimován pomocí pbzip2, což často není pravda.
  • @Marco Věřím, že lbzip2 umožňuje paralelní dekompresi souborů, i když byly komprimovány s neparalelní implementací (např. Stock bzip2). Proto ‚ proto používám lbzip2 přes pbzip2. (Je ‚ možné, že se to od vašeho komentáře vyvinulo.)
  • This makes sense since the clock speeds won't increase any more – co? to ‚ to není tak docela pravda. příspěvek byl vytvořen v roce 2014, kdy Intel vydal i3-4370 na 3,8 GHz. v roce 2017 společnost Intel vydala i7-8700K na 4,7 GHz. v roce 2018 vydali i9-9900K na 5GHz – a tam ‚ s pravděpodobně cpus v roce 2015 & 2016, který ‚ na tomto seznamu také chybí

odpověď

LZMA2 je systém blokové komprese, zatímco gzip není. To znamená, že LZMA2 je vhodný pro vícevláknové zpracování. Pokud v archivu dojde k poškození, můžete obecně obnovit data z následujících bloků pomocí LZMA2, ale nemůžete to udělat pomocí gzip. V praxi ztratíte celý archiv s gzipem po poškození bloku. S archivem LZMA2 přijdete pouze o soubory ovlivněné poškozenými bloky. To může být důležité ve větších archivech s více soubory.

Komentáře

  • Toto je opravdu velmi užitečné a důležité rozlišení!
  • Můžete tyto nároky zálohovat zdroji? Ještě jsem neviděl nástroj pro obnovení XZ a můj známý zdroj tvrdí jinak: nongnu.org/lzip/xz_inadequate.html

Odpověď

Krátká odpověď : xz je efektivnější z hlediska kompresního poměru. Šetří tedy místo na disku a optimalizuje přenos po síti.
Tuto Rychlou srovnávací hodnotu můžete vidět pomocí praktických testů.

Komentáře

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *