web-dev-qa-db-ja.com

ページがスワップアウトされたときのTLBキャッシュのフラッシュ

最近、Linuxは、その物理アドレスの対応するデータがスワップアウトされたときにTLBキャッシュをフラッシュするだけであり、その結果、TLBが十分に活用されていないと聞きました。すべてのOSが同じことをするかどうかはわかりません。

これが当てはまる場合、RAMを増やし、コンテキストの切り替えを回避して、キャッシュをTLBに保持しますか?

1
kevin

Linuxカーネルは同じアプローチでTLBとTLBキャッシュを処理しているようです。アーキテクチャに依存しないレベルでは、TLBキャッシュの一部または全体をフラッシュするようなものはありません。 vmは、たとえば、ページアウトします。このアクションには、必要に応じてハードウェアに依存するコードをトリガーするフックがいくつかあります。 CPUに応じて、カーネルはページアウトごとに複数のページフラッシュを実行するか、CPUがページフラッシュの範囲をサポートするか、どちらもサポートせず、カーネルはキャッシュ全体をフラッシュする最も高価なフラッシュを使用します。

このトピックに関する2つの興味深い記事があります。

2
Huygens

データをスワップアウトすることは、TLB行を削除するよりもかなりコストがかかります(後で使用することはありません)。また、TLB全体をフラッシュする方がおそらくはるかに安価です。

Linuxの本町は絶対的なパフォーマンスフリークです。あなたが主張するように彼らがそうするなら、それは影響を受けたアーキテクチャがより良いものを何も許さないからです(またはそれは問題ではありません)。

0
vonbrand