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

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

また周期的(一秒毎)に動作し、常に空きメモリ状態のパトロールを行っている。

int kswapd(void *unused)
{
        for (;;) {
                if (フリーメモリが少なければ)
                       ページの解放(do_try_to_free_pages関数)
                ページのAGING処理(refill_inactive_scan関数)
                VM負荷状態再計算(recalculate_vm_stats関数)
                ディスクI/Oを起動(run_ask_queue(&tq_disk)関数)
                if (十分なフリーメモリになれば)
                       待ちに入る(inerruptible_sleep_on_timeout関数)
        }
}

(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST
1