ますます多くの tar
アーカイブ従来のの代わりに、圧縮にはLZMA2に基づく xz
形式を使用します。 div> bzip2(bz2)
圧縮。実際、 kernel.org は「 Good-byebzip2 」の発表を、2013年12月27日に遅くしました 、カーネルソースがこの時点からtar.gzとtar.xzの両方の形式でリリースされることを示します-そしてウェブサイトのメインページで直接何が提供されるのはtar.xz
です。
これが発生する理由と、 gzip
このコンテキストでは?
回答
配布用インターネットを介したアーカイブでは、一般的に次のことが優先されます。
- 圧縮率(つまり、コンプレッサーがデータをどれだけ小さくするか)。
- 解凍時間(CPU要件) ;
- 解凍メモリの要件;および
- 互換性(解凍プログラムの普及度)
圧縮メモリ& CPU要件はそのために大型の高速マシンを使用でき、1回だけ実行する必要があるため、非常に重要です。
bzip2と比較して、xzの方が圧縮率が高く、解凍時間が短くなります。ただし、通常使用される圧縮設定では、解凍するためにより多くのメモリが必要であり、 [1] はやや普及していません。 Gzipはどちらよりも少ないメモリを使用します。
したがって、gzip形式とxz形式の両方のアーカイブが投稿され、次の項目を選択できます。
- を備えたマシンで解凍する必要があります非常に限られたメモリ(< 32 MB):gzip。カーネルソースについて話すときはあまりありそうにありません。
- 利用可能な最小限のツールを解凍する必要があります:gzip
- ダウンロード時間や帯域幅を節約したい:xz
bzip2を選択するための要素の現実的な組み合わせは実際にはありません。そのため、段階的に廃止されます。
ブログ投稿で圧縮の比較を確認しました。結果を複製しようとはしませんでしたが、一部が変更されたと思われます(ほとんどの場合、xz
が最新のものとして改善されていると思います)。
(xzよりも優れたbzip2実装が望ましい特定のシナリオがいくつかあります。bzip2はxzよりも多くのゼロとゲノムDNA配列を含むファイルを圧縮できます。新しいバージョンのxzには、データを許可する(オプションの)ブロックモードがあります。破損および並列圧縮と[理論的には]解凍後の回復。以前は、bzip2のみがこれらを提供していました。 [2] ただし、これらはいずれもカーネル配布に関連していません)
1:アーカイブサイズでは、xz -3
はbzip -9
前後です。その後、xzは解凍に使用するメモリが少なくなります。ただしxz -9
(たとえば、Linuxカーネルtarballに使用される)は、bzip -9
よりもはるかに多くを使用します(さらにxz -0
gzip -9
)以上が必要です。
2: F21システム全体の変更:デフォルトのbzip2実装としてのlbzip2
コメント
- のトピックに関するコメントフォールトトレランスですか、それとも'が常に完全に圧縮アルゴリズムの外部で実装されているものですか?
- @illumin É復元力は'圧縮率を犠牲にすることなく提供することはできません。 'は直交する問題であり、Parchiveのようなツールは存在しますが、カーネルTCP 'のエラー処理は同じように機能します。
- @illumin Éフォールトトレランス(par2に似たものを意味すると仮定)は通常'インターネットを介したアーカイブの配布に関する懸念。ダウンロードは十分に信頼できると見なされます(破損している場合は再ダウンロードできます)。暗号化ハッシュと署名がよく使用され、改ざんだけでなく破損も検出します。圧縮比は犠牲になりますが、フォールトトレランスが向上するコンプレッサーがあります。 HTTPまたはFTPのダウンロードに見合う価値のあるトレードオフを見つける人はいないようです。
- xzはLESSメモリを使用して解凍します。
- @Mikeこれを書いたときから変更されていますか?特に、脚注1ではメモリ使用量について説明しています。
回答
まず、この質問は直接関係していません。 tar
へ。 Tarは圧縮されていないアーカイブを作成するだけで、圧縮は後で適用されます。
Gzipは、LZMA2やbzip2と比較して比較的高速であることが知られています。速度が重要な場合は、gzip
(特にマルチスレッド実装 pigz
)多くの場合、圧縮速度と圧縮率の間の適切な妥協点です。速度が問題になる場合は別の方法がありますが(LZ4など)。
ただし、高い圧縮率が必要な場合、LZMA2はほぼすべての面でbzip2
を上回ります。多くの場合、圧縮速度は遅くなりますが、解凍がはるかに速くなり、メモリ使用量が増える代わりに圧縮率が大幅に向上します。
bzip2
下位互換性を除いて、これ以上。さらに、LZMA2はマルチスレッドを念頭に置いて設計されており、多くの実装はデフォルトでマルチコアCPUを使用します(残念ながら、Linuxのxz
はまだこれを行いません)。クロック速度はこれ以上増加しませんが、コアの数は増加するため、これは理にかなっています。
マルチスレッドのbzip2
実装があります(例: pbzip
)ですが、デフォルトではインストールされないことがよくあります。マルチスレッドのbzip2
にも注意してください。 LZMA2とは対照的に、ファイルがシングルスレッドのbzip2
を使用して圧縮された場合、解凍はシングルスレッドを使用しますが、圧縮中にのみ実際に効果があります。並列bzip2
バリアントは、ファイルが並列bzip2
バージョンを使用して圧縮されている場合にのみ、マルチコアCPUを活用できます。これは多くの場合そうではありません。
コメント
回答
LZMA2はブロック圧縮システムですが、 gzipはそうではありません。これは、LZMA2がマルチスレッドに適していることを意味します。また、アーカイブで破損が発生した場合、通常はLZMA2を使用して後続のブロックからデータを回復できますが、gzipを使用してこれを行うことはできません。実際には、破損したブロックの後にgzipでアーカイブ全体が失われます。 LZMA2アーカイブでは、破損したブロックの影響を受けたファイルのみが失われます。これは、複数のファイルを含む大規模なアーカイブで重要になる可能性があります。
コメント
- これは非常に便利で重要な違いです!
- これらの主張を情報源で裏付けることができますか? XZリカバリツールをまだ見ていませんが、既知のソースはそうではないと主張しています: nongnu.org/lzip/xz_inadequate.html
回答
短い回答: xzは、圧縮率の点でより効率的です。そのため、ディスクスペースを節約し、ネットワークを介した転送を最適化します。
このクイックベンチマークを確認して、実際のテストで違いを見つけることができます。
コメント
- リンクが壊れています。
- 新しいリンク: catchchallenger.first -world.info/wiki/ …
z
オプションを使用します。xz
はデフォルトでマルチスレッド化されるため、今後pixz
をインストールする必要はありません。一部のプラットフォームでは、xz
スレッドがすでにサポートされています。一方、bzip2
は、フォーマットがマルチスレッドを念頭に置いて設計されていないため、マルチスレッドになる可能性はほとんどありません。'さらに、pbzip2
は、ファイルがpbzip2
を使用して圧縮されている場合にのみ解凍を高速化しますが、これは多くの場合そうではありません。This makes sense since the clock speeds won't increase any more
-何ですか?その'は完全に真実ではありません。この投稿は、Intelが3.8GHzでi3-4370をリリースした2014年に行われました。 2017年、Intelは4.7GHzでi7-8700K
をリリースしました。 2018年に彼らは5GHzでi9-9900Kをリリースしました-そしてそこに'おそらく2015年にcpus & 2016その'もこのリストにありません