Solarisのカーネルチューンナップ・リファレンスのチューニング可能パラメータによるとSolarisは、sar -rのfreememがカーネルパラメータのlotsfreeを下回るとページスキャナが立ち上がり、ページングを始めます。
lotsfree
物理メモリの1/64か512KBの大きい方を取ります。
うちのSolarisには、メモリを1GB割り当てています。
$ prtconf | grep Memory Memory size: 1024 Megabytes $
lotsfreeを確認すると4062ページです。
$ sudo adb -k Password: physmem 3f78e lotsfree/e lotsfree: lotsfree: 4062 $q $
1ページは、4096Byteです。
$ pagesize 4096 $
ページをMB換算すると確かに物理メモリの1/64でした。
4096ページ(16MB)を下回るとページングが始まるということです。
$ expr 1024 / 64 16 $ expr 4096 \* `pagesize` / 1024 / 1024 16 $
desfreeとminfree
desfreeは、物理メモリの1/128か256KBの大きい方を取ります。
minfreeは、物理メモリの1/256か128KBの大きい方を取ります。
$ sudo adb -k physmem 3f78e desfree/e desfree: desfree: 2031 minfree/e minfree: minfree: 1015 $q $
明記されていませんが「副次的な影響」を見る限りdesfreeを下回ると非同期の入出力要求が処理されなくなり、NFS V3の非同期書き込みは同期書き込みとして処理されるようになります。
メモリを確保するためのページスキャンや、より多くのメモリを確保するためのスワッピングが発生しやすくなります。
minfreeを下回るとスワッピングが始まります。
どこからメモリ不足となるか
memfreeがlostfreeとほぼ同じ状態を保っていれば、メモリは不足していないけど余裕もないという状態です。
lostfreeを下回ると、なんとか動いている状態でパフォーマンスは低下すると考えてよいでしょう。