LinuxカーネルのZRAM機能とZSWAP機能の違いを知っている人はいますか? それらは非常に似ているようです-圧縮されたページをRAMに保存します。
2 に答える
ズラム
ステータス: バージョン 3.14 (2014 年 3 月) のメインライン カーネルで利用可能
実装: 圧縮されたブロック デバイス、メモリはデータが格納されるときに動的に割り当てられます
使用法: zram ブロック デバイスをスワップ デバイスとして構成して、物理的なスワップ デバイスまたはスワップ ファイルの必要性を排除します。
利点:
物理的なスワップ デバイスが不要になります。これは、ネットブックが最初に登場したときに人気を博しました。Zram (当時は compcache) により、ユーザーは、これらのメモリに制約のあるシステムで SSD の寿命を縮めるスワップを回避できました。
zramブロックデバイスは、スワップ以外の他のアプリケーションに使用できます.ブロックデバイスを使用する可能性があるものはすべて.
欠点:
- ページが zram に保存されると、ページインされるか無効化されるまでそこに残ります。ページアウトされる最初のページは、最も古いページ (LRU リスト) になります。これらは、アクセス頻度の低い「コールド」ページです。システムがスワップを続けると、よりウォームな (より頻繁にアクセスされる) ページに移動しますが、コールド ページによってスワップ スロットが消費されるため、これらのページを格納できない場合があります。zram ができないこと (compcache にはブロック バッキング デバイスを構成するオプションがありました) は、ページを物理ディスクに追い出すことです。理想的には、カーネル メモリを使用してウォーム スワップ ページをキャッシュしたり、解放してより生産的に使用したりできるように、カーネル内の圧縮スワップ スペースからデータをエージング アウトしてディスクに出力する必要があります。
zスワップ
ステータス: バージョン 3.11 (2013 年 9 月) のメインライン カーネルで利用可能
実装: スワップ ページの圧縮されたカーネル内キャッシュ。カーネル内キャッシュは圧縮され、圧縮アルゴリズムは CryptoAPI を使用してプラグ可能であり、ページのストレージは動的に割り当てられます。古いページをディスクに追い出して、これを一種のライトビハインド キャッシュにすることができます。
使用法: 通常のスワップ デバイス (またはスワップ ファイル) 向けのキャッシュ スワップ ページ。
利点:
スワップ コードとの統合 (Frontswap API を使用) により、zswap は、適切に圧縮され、メモリ割り当ての失敗を処理するページのみを格納することを選択できます。このような場合、ページはバッキング スワップ デバイスに送信されます。
キャッシュ内の最も古いページは、新しいページのためのスペースを確保するためにバッキング スワップ デバイスにプッシュされます。これにより、ページ エビクションの欠如によって生じる LRU 反転の問題が解決されます。
欠点:
- 物理的なスワップ デバイス (または swapfile) が必要です。
ZRAMは Linux カーネルのモジュールで、以前は「compcache」と呼ばれていました。ZRAM は、ディスク上のページングを回避することでパフォーマンスを向上させ、代わりに RAM 内の圧縮されたブロック デバイスを使用します。このデバイスでは、ハード ディスク ドライブ上のスワップ領域を使用する必要があるまでページングが行われます。RAM を使用するとディスクを使用するよりも高速であるため、zram を使用すると、特に RAM がインストールされていない古いコンピューターでスワッピング/ページングが必要な場合に、Linux が RAM をより多く使用できるようになります。
ZSWAPは、スワップ ページ用の軽量の圧縮キャッシュです。スワップアウト中のページを取得し、それらを動的に割り当てられた RAM ベースのメモリ プールに圧縮しようとします。zswap は基本的に、スワップ I/O を削減するために CPU サイクルを交換します。このトレードオフにより、圧縮キャッシュからの読み取りがスワップ デバイスからの読み取りよりも高速である場合、パフォーマンスが大幅に向上する可能性があります。