スワップデーモンによる監視

スワップデーモンkswapdは、Linuxカーネル起動時にカーネルスレッドとして起動される。このスレッドは永久に以下のkswpad関数を実行しづづける。

int kswapd(void *unused)
{
        while (1) {
                do {
                       if (空きメモリnr_free_pages が十分になったら)
                               break /* freepages.high ページ以上 */
                       if (!do_try_to_free_pages())
                               break /* これ以上解放できないとき */
                } while (プリエンプション要求のない間)
               
                タスクキューtq_diskに起動をかけ(run_task_queue関数)、
          キューに溜まっている処理を実行する。
                タスクステータスをTASK_INTERRUPTIBLEに変更
                一秒間待ちに入る(schedule_timeout関数)
        }
}

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1