1. 概要 空きメモリが少なくなってくると、ディスクキャッシュ等のページを解放して空きメモリを増やす。 2. 処理の流れ キャッシュの解放は主にshrink_*の関数で行われる。各関数の関連は図1のようになっている。 (注) zone_reclaim()については、NUMAアーキテクチャでなければ(CONFIG_NUMA未定義)なら何もしない。よって、get_page_from_freelist()でフリーリストからページが取れなくてもzone_reclaim()によってページの回収処理は動かない。一般的なアーキテクチャではget_page_from_freelist()が失敗した後、try_to_free_pages()でページの回収が行なわれる。 3. shrink処理の開始契機 図1にもあるようにshrink処理の開始契機となるのは以下の関数。 kswapd() alloc_page