物理メモリに予約されている仮想メモリの量は、物理メモリのサイズによって異なりますか?
私のswappinessパラメータが60であると仮定すると、8 GBのうち4 GBはアプリケーションデータで埋められ、残りの4 GBはファイルキャッシュで埋められます。
同じワークロード、同じスワップパラメータを使用しますが、物理メモリが4 GBしかない場合、4 GBはすべてアプリケーションデータで埋められますか?
答え1
これは比例的であり、メモリサイズをまったく基準としていません。コードはmm/vmscan.c
。メモリと同じようにスキャンされます)、またはページキャッシュが非常に大きくなり、非アクティブページで埋められると(ファイルサポートページのみがスキャンされます)、次のような状況が発生します。
/*
* With swappiness at 100, anonymous and file have the same priority.
* This scanning priority is essentially the inverse of IO cost.
*/
anon_prio = swappiness;
file_prio = 200 - anon_prio;
これらの優先順位は、各タイプのメモリを解放するメモリスキャナが最近成功したかどうかに応じてさらに調整されます。その後、各タイプのメモリが比例的に検索され、最近使用されていなかったページが削除されます。
結論は、すべての作業量によって異なります。 swappiness値は、匿名メモリの交換試行に割り当てる優先順位をシステムに通知しますが、メモリアクセスパターンによって実際に発生する状況が決まります。