Когда в пространстве подкачки остается мало свободного места, операционная система освобождает часть пространства подкачки. Для этого процессам отправляется предупреждение о том, что нужно освободить пространство подкачки. Если после этого свободной памяти в пространстве подкачки будет по-прежнему недостаточно для выполнения текущих процессов, операционная система уничтожит некоторые процессы.
Пороговые значения npswarn и npskill указывают, когда следует рассылать процессам предупреждения и когда нужно уничтожать некоторые процессы.
Эти пороговые значения можно изменить с помощью команды vmtune:
npswarn = maximum (512, 4*npskill)
Значение npswarn должно быть больше нуля и меньше общего числа страниц в пространстве подкачки. Его можно изменить с помощью команды vmtune -w.
npskill = maximum (64, число-страниц-в-пространстве-подкачки/128)
Значение npskill должно быть больше нуля и меньше общего числа страниц в пространстве подкачки. Его можно изменить с помощью команды vmtune -k.
Если опции nokilluid будет присвоено ненулевое значение с помощью команды vmtune -n, то процессы пользователей, идентификаторы которых меньше указанного значения, не будут уничтожаться в случае нехватки пространства подкачки. Эта опция доступна только в AIX версии 4.3.3.2 и выше.
Если процесс не удалось породить из-за нехватки пространства подкачки, планировщик повторит попытку еще пять раз. По умолчанию интервал между повторными попытками составляет 10 тактов.
С помощью параметра -f команды schedtune можно изменить число тактов, по истечении которых система может повторить вызов fork(), который в предыдущий раз не был выполнен. Например, если вызов fork() не был выполнен из-за того, что в системе не хватило памяти для создания нового процесса, то система повторит вызов по истечении указанного числа тактов. Значение по умолчанию равно 10 тактам. Поскольку один такт равен 10 мс, то система повторит вызов fork() через 100 мс.
Если нехватка пространства подкачки связана с кратковременным пиком активности, то увеличение интервала между повторными вызовами (например, с помощью приведенной ниже команды) позволяет дождаться, пока память будет освобождена:
# /usr/samples/kernel/schedtune -f 15
В этом случае повторный вызов fork() с большой вероятностью будет выполнен успешно, поскольку за указанный интервал некоторые процессы могли завершить работу и, следовательно, освободить страницы, занимаемые в пространстве подкачки.