必要に応じてカーネルが占めるように、プロセスはキャッシュメモリを割り当てることができますか?

必要に応じてカーネルが占めるように、プロセスはキャッシュメモリを割り当てることができますか?

私は具体的にLinuxについて質問していますが、通常はUnix(POSIXなど)に適用される回答が良いでしょう。

Linuxは、利用可能なメモリ(つまり、まだプロセスに割り当てられていないメモリ)を使用してファイルシステムメタデータ(およびその他のエントリ)をキャッシュします。プロセスが追加のメモリを要求すると、これらのキャッシュはスペースを確保するために縮小されます。

私の質問:アプリケーションがキャッシュとしてのみ使用されるようにメモリを割り当てる方法はありますか?つまり、使用可能なメモリが不足していて他のプロセスのメモリ割り当てを処理できない場合、カーネルが何らかの方法でそのメモリ領域に対する制御を奪うことができることを知って割り当てが行われます。

答え1

あなたは使用することができますmadvise(2)これを行うには、MADV_FREEページをリサイクル可能としてマークしますが、すぐに削除する必要はなく、データを再読み込みできます。ページごとにゼロをすべて復元すると、ページが消えたことがわかります。

関連情報