I / O負荷が激しく、Zramに多くの項目を保存した後、使用されたスペースは「空き」スペース全体に近づきます。

I / O負荷が激しく、Zramに多くの項目を保存した後、使用されたスペースは「空き」スペース全体に近づきます。

私はそれがLinuxのディスクキャッシュだとは思わない。では、htopメモリースティックが緑色(キャッシュオレンジではない)でzramに保存されているファイルを削除しました。どのプロセスも多くのメモリを使用していないようです。

ロードはソフトウェアをコンパイルし、ビルドファイルはzram(GentooPORTAGE_TMPDIRの場合/var/tmp/portage)に保存され、スワップファイルもzramに保存されます。メモリ不足時にディスクに書き込むようにzram書き込みストレージを設定します。

2つのソフトウェアをコンパイルしましたが、1つ以降もまだメモリの約1/2を使用しているようです。 zramctlは、使用された合計データが0Gに近く、どのプロセスもあまりにも多くのメモリを使用せず、Linuxディスクキャッシュは問題にならないと言います。 。

kswapdのCPU使用率が常に100%に達すると、カーネルOOMが過剰なRAMを消費するプロセスを終了しました。その後もまだRAMが使用されていますが、それを使用している項目は見つかりません。ディスクキャッシュの場合、カーネルはメモリを消費するプロセスにスペースを渡します。しかし、そうではなかったので、ディスクキャッシュの問題ではない可能性が高いです。コンピュータを再起動し、2番目のソフトウェアは問題なく迅速にコンパイルされました!

何が起こっているのか、何がメモリを使用しているのかをもっと詳しく知る方法を知っている人はいますか?

答え1

短い答え:ファイルシステムをマウントするとき、またはZramデバイスで作成されたスワップ領域を開くときは、ドロップマウントオプションを使用してください。

拡張:discardマウントオプションとして使用するためにファイルシステムをマウントする場合は、オプションの間にスペースを入れずに-oマウントオプションを区切って使用してマウントオプションを設定できます。,ほとんどのLinuxファイルシステムはこれをサポートする必要があり、Btrfsで使用されています。それ以外の場合、ファイルシステムはマウントされたディレクトリで定期的に実行できますが、出力に見られるように、-dこれはswapon不要であり、マウントオプションで十分です。fstrimzramctldiscard

編集する:fstrim実際にいくつかの追加テストを行った後、定期的にZramマウントで実行するのが良いアイデアだと思います。 Zramのビルドディレクトリを使用してFirefoxをコンパイルした後、メモリ使用量は約1.1GBです。インストールオプションがないほど悪くはありませんが、discard改善の余地があります。 Zramマウントfstrim(実行に数秒しかかかりません)で実行すると、RAM使用量は400MBに達しましたが、これは通常の現象です。クローンジョブに入れたり、Portageコンパイル後に入れたりすることもできます。

説明する:Zramは、ファイルが削除されたときにそのスペースがデータに使用されなくなったことを通知しないため、メモリ内の圧縮ページを削除しません。破棄オプションは、ファイルを削除するときに破棄を実行します。廃棄インストールオプションを使用している場合、Zramは未使用のページについて通知され、それに応じてサイズが変更されます。

関連情報