Linuxプロセスには実際に独立したキャッシュがありますか?

Linuxプロセスには実際に独立したキャッシュがありますか?

誰かがどのくらいのメモリが使用されているかについて不平を言うたびに、すべての応答はそれが単なるキャッシュであり、無害で、必要に応じて再割り当てされると主張するようです。メモリ監視ツールによると、そうではないことは明らかに示していますが、一部のディスクキャッシュですが、「実際の」使用量です。

ディスクキャッシュは間違いなく問題ではなく、アプリケーションに透過的で簡単に停止できることがわかります。しかし、多くの人が主張するように、これはビディスクキャッシュにも当てはまりますか?プロセスの標準メモリとキャッシュに使用されるメモリの間に一種の分離がありますか?カーネルはいつでもキャッシュを削除できますか?

アプリケーションは、キャッシュ用のmallocや標準mallocなど、目的に応じてメモリを割り当てるさまざまな方法を使用する必要があるようですが、実際には「無害な」キャッシュを持つ唯一の方法のようです。使用可能なメモリの量を継続的に手動で監視し、使用可能なメモリが減少した場合に一部のキャッシュを削除することは、かなりの量の作業のように見え、多くのアプリケーションがキャッシュが「無害」であることを確認するためにそのような措置を講じるかどうか疑われます。

ベストアンサー1

いいえ、カーネルはプロセスのキャッシュを管理しません。プロセスに割り当てられ、使用されるすべてのメモリは、カーネルによって「貴重な」と見なされます。プロセスが再び必要なときにコンテンツを取得できる場合にのみ、物理メモリから削除されます。

Linuxでは、プロセスできるメモリを割り当てて次を呼び出して、必要に応じてメモリを回復できることをカーネルに通知します。madviseMADV_FREE提案があります。ただし、プロセスはこれらのメモリ領域に何が起こるかを完全に理解する必要があります。

おすすめ記事