Имя демона подкачки немного ошибочно, поскольку демон делает больше, чем просто заменяет измененные страницы в файл подкачки. Его задача - обеспечить эффективную работу системы управления памятью. Демон подкачки ядра (kswapd процесс инициализации ядра во время запуска и сидит в ожидании периодического истечения таймера подкачки ядра.) Запускается при каждом истечении времени таймера демон подкачки проверяет, есть ли число свободных страниц в системе становится слишком мало. Свободных страниц в системе слишком мало, если: nr_free_pages + nr_async_pages < free_pages_high
Linux не хочет, чтобы в файл подкачки одновременно записывалось слишком много страниц, поэтому она использует nr_async_pages для хранения количества страниц, записываемых в данный момент в файл подкачки. free_pages_low и free_pages_high устанавливаются во время запуска системы и связаны с количеством физических страниц в системе. Если свободных страниц достаточно, демон подкачки спит до тех пор, пока не истечет его таймер, в противном случае демон подкачки пытается тремя способами уменьшить количество физических страниц, используемых системой:
- Уменьшение размера буфера и кэшей страниц,
- Обмен общих страниц,
- Обмен или удаление страниц.
По умолчанию демон подкачки пытается освободить 4 страницы при каждом запуске. Вышеуказанные методы проверяются по очереди, пока не будет освобождено достаточное количество страниц. Затем демон обмена снова спит, пока не истечет его таймер.