ディスクスワップ領域を圧縮する方法

ディスクスワップ領域を圧縮する方法

ディスクからスワップを圧縮する方法を探しています。私は代替ソリューションのより広範な議論を望むものではありません。最後に議論を参照してください。

頑張りましたが…

圧縮されたzfs zvolと交換すると機能しません。設定が機能し、スワップが機能し、スワップが発生するため、次のように言うこともできます。技術的に動作するソリューションですが、フロッピーアクセスよりも遅く、システムが10回中10回完全に停止している場合、動作するソリューションは正確にどのように「動作」しますか?数回の試みが必要でした。システムがメモリ不足状態に入ると、すべてが停止します。 Lostupを使って間接的に試したり、zram用のバックアップデバイスとしてzfs zvolを試したりもしました。違いはなく、常に同じ結果です。書き込み/読み取り速度が非常に遅く、システムが圧迫されると必然的に崩壊します。

BTRFS。のみサポート圧縮されていないファイルを交換します。空のファイルをdd-ingして、通常のext2でフォーマットし、圧縮し、ループデバイスでマウントし、その中にスワップファイルを生成してみたので、圧縮されていないループイメージだけがサポートされるようです。強制圧縮が有効なbtrfsをインストールしても機能しません。 compsize は、ext2 イメージ圧縮率が正確に 1.00 であることを示しています。

Zswap - メモリと通常のディスクスワップの間のバッファです。通常のディスクスワップは依然として一般的なディスクスワップであるため、zswapはページに書き込む前にページを解凍します。

Zram - compcacheが始まって以来、サポートされているデバイスオプションがあったので、長年にわたって圧縮ディスクスワップを使用してきた人々にとって完璧な候補になると思います。そんな幸運はありません。圧縮されたメモリページは自由にディスクに書き込むことができますが、書き込み前にページを解凍します。 zswapとは異なり、同じでゼロで埋められたページを書きません。これはi \ oを節約し、スループットをわずかに向上させ、ラウンドロビンマウントスパースファイルをbacking_devとして使用することを保証します。これはまだディスク圧縮が不足していますが、低コストのデバイスで見つかったスワップ最適化に最適なオプションです。


私が試すことができる他のアイデアはありますか?たぶん私が知らないどんな圧縮されたブロックデバイス階層がそこに記録されているすべてを圧縮することができ、ファイルシステムを必要としませんか?圧縮オーバーレイを使用できますか?ただし、FUSEはこれを行いません。なぜなら、FUSE自体が置き換えられるオブジェクトだからです。ただし、FUSEの交換を防ぐ方法を知っている場合は例外です。

私はこれがたくさん探索されているのを見ていないので、あなたが好きなクレイジーな提案を歓迎します。さて、壁に物を投げて何が付くのか見てみましょう。

専門家のために - この問題に関連するLinuxソースコードの一部を読んだり書いたりした場合は、これが実装されていないと思う理由と、これがどうなると思うかをできるだけ詳しく説明してください。実装されますか?できるアイデアがあれば実装してみてください。明らかに、可能であればそれを実装するようにしてください。それでは本当に良いでしょう。


議論する

これを重複としてマークする前に、stackexchangeに関連するいくつかの同様の質問があることを知っていますが、有効な答えがなく、追加のフィードバックがほとんどありません。だから私はここで詳細を説明し、私よりスマートな人がこれを理解できることを願って、すべてをまとめようとします。私はプログラマーではなく、ユーザーだけでスクリプト初心者なので、この部分はかなり低い障壁になります。

ただメモリをもっと買う、価格が安い

ソリッドステートドライブの購入

悪い交換

とにかく圧縮が遅いのになぜ面倒なのですか?

あなたが言わなければならないことが上記の内容の1つであれば - 残してください。主張は最適化。今日、メモリがいくら安くても無料ではありません。交換は常に必要であり、それを持つことがシステムにとって良いという事実は長年実証されています。圧縮は何もありません。 「重い」アルゴリズムでさえ、過去10年間に作成されたすべてのプロセッサで非常に高速なパフォーマンスを発揮します。最後に、もちろん、SSDを使用している場合、圧縮は実際にボトルネックになる可能性がありますが、誰もがディスク容量よりも速度を優先するわけではありません。たくさんあります。 。

答え1

私はあなたに具体的な答えを持っていません。あなたが探検できるものは左心室容積

LVMは主にパーティショニングの代替形態です。しかし、技術的に言えば、LVMの物理ボリュームは任意のブロックデバイスになることができます。これは最終的に物理ブロックデバイスのサポートを受ける論理ブロックデバイスを提供します。

LVM 論理ボリュームはブロックデバイスなので、通常はスワップに使用できます。

LVMには次の機能があります。パワー圧縮を提供します。

Virtual Data Optimizer(VDO)機能は、インラインブロックレベルの重複排除、圧縮、およびストレージシンプロビジョニングを提供します。 LVMシンプロビジョニングボリュームと同様に、VDOを論理ボリュームマネージャ(LVM)論理ボリューム(LV)として管理できます。

発生する可能性のある問題

すべての形式の圧縮には少しのメモリが必要です。スワップ用に設計されていないソリューションの主な関心事は、ページを圧縮するためにカーネルからメモリを動的に要求できることです。圧縮になるからなぜならカーネルはRAMを確保する必要があり、RAMを要求するとエラーが発生する可能性があります。

もちろん、ドライバは作成時にそれを認識し、基本的に必要なすべてのRAMを要求できます。要点は、ドライバが交換を念頭に置いて作成されていない場合に問題になる可能性があることです。

関連情報