Требования программ к пространству подкачки

Объем пространства подкачки, который требуется приложению, зависит от типа действий, выполняемых в системе. При нехватке пространства подкачки возможно аварийное завершение работы процессов.

Если пространство подкачки переполнится, может произойти сбой в работе системы. При уменьшении свободной области в пространстве подкачки необходимо определить дополнительную область подкачки.

Система отслеживает число свободных блоков пространства подкачки и предупреждает об их нехватке. Команда vmstat позволяет получить статистическую информацию, связанную с работой виртуальной памяти. Когда число свободных блоков становится меньше установленного порога, называемого уровнем предупреждения пространства подкачки, система информирует об этом все процессы (кроме kprocs), отправляя сигнал SIGDANGER.

Прим.: Если объем свободного пространства подкачки оказывается меньше второго установленного порога, называемого критическим уровнем пространства подкачки, система отправляет сигнал SIGKILL процессам, использующим большую часть пространства подкачки и не обрабатывающим сигнал SIGDANGER. По умолчанию сигнал SIGDANGER игнорируется. Система завершает процессы с помощью сигнала SIGKILL до тех пор, пока число свободных блоков в пространстве подкачки не выйдет из критического диапазона. Если параметру low_ps_handling присвоено значение 2 (с помощью команды vmo) и при этом нет процессов, подлежащих уничтожению (без обработчика SIGDANGER), то система отправит сигнал SIGKILL первым из процессов, у которых есть обработчик сигнала SIGDANGER.

Процессы, динамически запрашивающие память, могут проверять наличие достаточного объема пространства подкачки, отслеживая значения уровней пространства подкачки с помощью функции psdanger или специальных функций выделения памяти. Процессы могут избежать принудительного завершения, определив обработчик сигнала SIGDANGER и выполнив функцию disclaim для освобождения памяти и ресурсов пространства подкачки, выделенных в областях данных и стека, а также в сегментах общей памяти.

Ниже перечислены другие функции, позволяющие получить информацию о пространстве подкачки у VMM:

Функция Описание
mincore Позволяет получить информацию о выгруженных страницах памяти.
madvise Позволяет процессу сообщить системе о предполагаемом использовании пространства подкачки.
swapqry Возвращает состояние устройства подкачки.
swapon Запускает процесс обмена данными с указанным блочным устройством.