zswapのmax_pool_percentパラメータを増やすことは、zramとzswapの概念を組み合わせてメモリを増やし、ディスク使用量を減らす賢明なアイデアですか?

zswapのmax_pool_percentパラメータを増やすことは、zramとzswapの概念を組み合わせてメモリを増やし、ディスク使用量を減らす賢明なアイデアですか?

私が何か見逃しているのかはわかりませんが、この部分は軽く見てください。

したがって、zramはメモリスワッピングを介してディスクのI / O操作を減らすために使用されます。したがって、HDDを使用しているユーザーのシステム停止を排除し、メモリに配置できるデータ量を「増加」させます。しかし、欠点は、このスワップが不足している場合は速度の利点を失い、通常はHDDにスワップする必要があり、最近使用されていない(LRU)データを送信する代わりにアクティブページをスワップする可能性があることです。だからそれは投げられたすべてを圧縮しようと盲目的に動作します。

ただし、zswapはよりスマートになり、zramが行うことを可能にしますが、より多くのI / Oアクティビティが必要です。スワップするページをキャッシュし、メモリプールがいっぱいになると、最近使用されたページをスワップします。ただし、圧縮できないデータをディスクスワップに直接送信します。

今質問が出ます。私の言葉を聞いてください。 zswapのメモリプールサイズを増やすことはzramと同等ではありません。ディスクキャッシュやスワップLRUなどのzswapのスマート機能を維持しながら、RAMプールがより多くのデータを圧縮して使い果たされる前により多くのページを収容できるようにすることで、RAMに余分な空き容量を追加します。ページ?これが二つの世界の最高ではないか?

唯一の欠点は、まだ圧縮できないデータをディスクに転送してディスクアクティビティを引き起こすことです。これはよくわかりませんが、交換可能性を1に下げても問題は解決しませんか?それとも、スワップは非アクティブページにのみ影響し、zswapが圧縮できないページには影響しませんか?では、誰でもこの問題に対する解決策を提案できますか?

ベストアンサー1

Swappinessはスワッピングメカニズム全体に影響を与えるため、1に設定するとシステム全体がスワッピング用にページを送信する方法に影響します。 Zswapは通常のRAMとスワップデバイスの間の層なので、zswapが有効になっていると、スワップはシステムがページをzswapに送信する頻度にのみ影響します。 zswap 書き込み保存にはまったく影響しません。それもそれを実現することはできません。

より高く設定すると、max_pool_percentRAM に多くのデータを保存するスペースがありますが、disksizezram でより大きな値を設定することと変わりません。同じ効果があり、高すぎると同じように深刻な結果につながる可能性があります。これを100に設定し、システムを強制的に交換して何を意味するかを確認します。

本当に2つの世界の最高を望むなら、2つの世界の最高だけでよいでしょう。場合に備えて、書き込み保存が有効なzramスワップデバイスの前にzswapを配置し、優先順位の低い一般的なディスクスワップデバイスを配置しました。 Zswapにはすべての利点がありますが、最大圧縮率は3:1です。 zswapがLRUであるか圧縮できないデータであるかにかかわらず、自己書き込み保存をトリガーすると、データはzramに送信されます。圧縮できない場合 - 単純なスクリプトは、hugepagesがzramに書き戻されるようにトリガしますbacking_dev。ページがLRUが削除されると、zswapは削除する前に解凍し、zramは保存する前に再度圧縮してzswap比よりも高い圧縮を達成します(lzoまたはzstdを使用)、私は約5:1の圧縮率を提供しますzstd好む。同じスクリプトはzramがどのくらいのRAMを消費しているかを監視し、backing_dev消費が望むよりも高い場合はmax_pool_percent内容全体をzramにダンプします(私はzswapの30%に設定しました)。このようにシステムがスワッピングを開始すると、zswap は初期のパフォーマンスへの影響を軽減します。 zramへのデータ入力を圧縮できない場合でも、zramはデータを送信する前にゼロパディングと同じパディングページを削除し、backing_devディスクi \ oを減らします。驚くべきことに、zswap自体はこれを行いません。プールの制限に達すると、新しいページの受け入れが停止されるため、ゼロで埋められ、同じで埋められたすべてのページがディスクに書き込まれ、i \ oが遅くなり、CPUを占有します。したがって、zram層があります。

おすすめ記事