Linuxキャッシュエビクション


8

LinuxマシンのVFSキャッシュの動作を見ると、実質的にアイドル状態(crondおよび他のほとんどのデーモンが停止し、インターフェースがダウンしている)であっても、空きメモリの量が徐々に増加して、アイテムがキャッシュから追い出されていることがわかります。

私は多くのグーグルを行いましたが、これがどのように制御されるかについての参照を見つけることができません(それがvm_swappinessの副作用でない限り)。新しいメモリ割り当ての要求がないときに、アイテムがキャッシュから削除される理由を理解するための正しい道を誰かに教えてもらえますか?


«アイテムがキャッシュから追い出されていることを意味します»—まあ、その場合vmstat、キャッシュサイズが増加していることがわかります—本当にそうですか?
poige 2013

きっと減少します。はい(減少)
symcbean 2013

それで、あなたは無料のメモリが増加し、同時にキャッシュ/ bufのサイズが減少していると言いますか?
poige 2013

回答:


1

swappinessは、割り当てられたアプリケーションメモリをスワップアウトしてキャッシュ用のスペースを確保するかどうかにのみ影響します。vfs_cache_pressureは、表示される内容を制御するsysctlです。


1
いいえ-vfs_cache_pressureは、メタデータとページキャッシュの保持の比率を制御します(少なくとも、私が読んだドキュメントと実行した実験に従って)
symcbean

1
けっこうだ。私はもう少し調査を行いましたが、すべてがLRU順序リストに並べられており、何らかのしきい値(人工的または物理的)が満たされているか超えられている場合にのみ調べました。それを考えると、何かがまだ起こっていると思います(カーネルスレッドの起動など)。これを理解することが非常に重要である場合、メモリマネージャーの再利用を追跡する「mmreclaim.stp」と呼ばれる事前に作成されたsystemtapスクリプトがあるように見えます。また、「sar -A」を使用して実際にスワップしないことも確認しました。
Bratchley 2013

1

Linuxは、pdflushと呼ばれるプロセスを使用して、ページキャッシュからデータをフラッシュします。

pdflushは、/ proc / sys / vmのパラメーターによって制御されます

#/proc/sys/vm/dirty_expire_centisecs
The hundredth of the second after which data will be considered to be expired from the page cache and will be written at the next opportunity.

#/proc/sys/vm/dirty_writeback_centisecs`    
The hundredth of a second after which the pdflush wakes up to write data to disk.

#/proc/sys/vm/vfs_cache_pressure`    
This will reclaim dentries and inodes which are also part of the cache.

詳細については、次のスレッドをチェックしてください。

pdflushデーモン
動作の理論と書き込みが多いロードのチューニング
Linuxキャッシュメモリ


Joe氏に感謝します。ただし、最初の2つのオプションは、ファイルシステムに書き込む必要があるデータ(つまり、書き込みバッファー)に関連しており、読み取られて変更されていないデータ(読み取りバッファー)に関連します。vfs_cache_pressureは、ファイルの内容に関連してファイルメタデータを削除するための設定を制御します。
symcbean 2014年

@symcbean正解です。答えは書き込みキャッシュについて詳しく述べています。リードキャッシュはLRUに基づいてクリアされます。ただし、Linuxでは、読み取りキャッシュをクリアする方法に基づいて、2つのリストによる戦略を使用しています。あなたはについての詳細を読むことができツー一覧StragetyとどのようにLinuxはここで読むのキャッシュをクリアします。これが理にかなっている場合はお知らせください。あなたの場合、私はすべてのプロセスが停止した後、これらの読み取りキャッシュが非アクティブリストに入り、クリアされると仮定します
Joe

ありがとう、素敵な記事。その章が何の本から来たのか、どんな考えですか?ただし、特定のページが追い出しのために優先される方法を説明しますが、メモリに対する明らかな要求がない場合にページが追い出される理由は実際には説明していません。「キャッシュを縮小して他の用途でより多くのRAMを利用できるようにする」プロセスを制御するものは何ですか?これらを何に置き換えますか?
symcbean 2014年

@symcbeanキャッシュエビクションは、メモリが要求されるとすぐに機能します。ただし、誰もアクティブに使用していない場合は、キャッシュに入れても意味がありません。そこでアクティブなページが非アクティブなページになり、最終的に追い出されます。あなたの質問は、立ち退きは記憶の需要がある場合にのみ起こるという点に由来すると思います。Linuxは、利用可能になったときにすべての非アクティブなページをクリアします。[記事に記載] [ jothirams.com/linux-cached-memory/]のように、すべてがアクティブな場合、メモリが不足し、OOMが呼び出されます。
Joe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.