ksaitoの日記

日々試したことの覚え書き

Solarisのページングとスワッピング

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を下回ると、なんとか動いている状態でパフォーマンスは低下すると考えてよいでしょう。