Reducing Memory Access Latency by Satoru Moriya (Hitachi LTC)
が素晴らしすぎるのでメモ。
まとめ
- vm.swappiness = 0 により、解放可能なページキャッシュがあるうちはプロセスのメモリ(anon page)をスワップアウトしないようにできる*1。
- swappines=0 にしても 解放可能なページキャッシュがあるのにプロセスのメモリがスワップアウトされる問題があったが、この資料を書いた守屋さんのパッチが Kernel 3.5 にマージされている → mm: avoid swapping out with swappiness==0
- extra_free_kbytes で kswapd がページ回収を開始する閾値を上げ、direct reclaim が発生しにくくできる
- Kernel 3.2 以降、direct reclaim ではクリーンなページキャッシュを回収対象としている
- direct reclaim でダーティーなページキャッシュが回収されるとディスクへの書き出しが必要になるので、メモリ割当が大幅に遅延する。
- Mel Gorman のパッチが Kernel 3.2 にマージされている→ mm: vmscan: do not writeback filesystem pages in direct reclaim
- Preallocation + mlock(2)/mlockall(2) で重要なプロセスは物理メモリを最初に割当て、かつページアウト対象外とできる。ただし、アプリケーションをそういう作りにする必要がある。
- cgroup の memory.limit_in_bytes で特定のプロセスのページキャッシュ使用量を制限できる。
REDUCING MEMORY ACCESS LATENCY | Hitachi Vantara Community も同じ資料のようです。
*1:正確にはページアウトしない