カーネル文書によると:
This control is used to define how aggressive the kernel will swap
memory pages. Higher values will increase aggressiveness, lower values
decrease the amount of swap.
しかし、これはやや曖昧です。パラメータが最終的に何を制御するかを調べようとしています。カーネルがページ置換をどれほど積極的に試すかを調整することは知っていますが、カーネルコードのどの決定プロセスに影響しますか?
カーネルがページを置き換える前にページにアクセスする時間を調整しますか?では、デフォルト値60はどういう意味ですか?増減1はどれくらい変わりますか? (公式があればいいと思います。)
それともアクセス頻度に応じてページを交換しますか?
それとも別のものですか?
ベストアンサー1
カーネルバージョン2.6.28以降、Linuxは以下を使用します。最近使用した項目を分割します。(LRU)ページ交換戦略。ファイルシステムソース(プログラムテキストや共有ライブラリなど)を含むページはファイルキャッシュに属します。ファイルシステムのバックアップがないページは匿名ページと呼ばれ、アプリケーション用に予約されているスタックスペースなどのランタイムデータで構成されます。通常、ファイルキャッシュに属するページはメモリから削除する方が安いです(これらのページは必要に応じてディスクから読み直すことができるからです)。匿名ページはファイルシステムをサポートしていないため、それらを格納するスワップスペースがない限り、プログラムが必要とする限りメモリに残る必要があります。
これvm.swappiness
get_scan_count()
オプションは定義で重要な役割を果たしますmm/vmscan.c
。get_scan_count()
削除するページを見つけるときに、匿名およびファイルLRUのリストをどれほど積極的に調べるべきかを決定します。各ケースの値は、最近の回転と最近のスキャン比の浮動平均によって決定され、システムのワークロードの変化を考慮するために、最新の参照が前の参照よりも大きい重みを持ちます。
これはvm.swappiness
、匿名ページのスワップファイルキャッシュページ間のバランスを変更する修飾子です。anon_prio=vm.swappiness
匿名ページに割り当てられた優先順位の値。デフォルト設定は60です。。ファイルキャッシュの優先順位の値は200で、この値からvm.swappiness
修飾子を減算しますfile_prio=200-anon_prio
。これは、基本的に(anon_prio=60
、file_prio=140
)システムが匿名ページのリサイクルコストをファイルページのリサイクルコストの2倍以上と見なすことを意味します。したがって、低いほど、vm.swappiness
より多くのファイルキャッシュページが匿名ページに置き換えられます。しかし、システムが近づくとメモリ不足の状況、匿名リスト、およびファイルLRUリストは、vm.swappiness
ゼロに設定されていない限り同様にチェックされます。
100に設定すると、vm.swappiness
優先順位は同じです(anon_prio=100
、、file_prio=200-100=100
)。 0に設定すると、vm.swappiness
カーネルがファイルキャッシュ内のページの匿名ページを削除するのを防ぎます。