Процессы, управление памятью и свопинг

Процедура обмена страниц, vhand, отвечает за освобождение памяти, когда возникает в этом необходимость. Эта процедура использует алгоритм "только что используемый" для аппроксимации рабочих наборов процесса, и записывает на диск те страницы, которые не были изменены за некоторый период времени. Размер такой страницы составляет 4096 байт. Когда памяти совсем недостаточно, рабочие наборы всех процессов подлежат свопингу.

Следующие настраиваемые параметры определяют как часто и при каких условиях процедуры vhand и bmapflush должны запускаться. Значение по умолчанию соответствуют большинству программных приложений.

NPROC
Указывает сколько элементов таблицы процессов надо распределить. Каждый элемент таблицы представляет активный процесс. Программа свопинга всегда является первым элементом, а /etc/init всегда является вторым элементом. Число элементов зависит от числа доступных терминальных линий и числа процессов, активизируемых каждым пользователем. Среднее число процессов каждого пользователя находится в интервале от 2 до 5 (см. также MAXUP, значение по умолчанию 25). При переполнении система fork вызывает возврат по ошибке EAGAIN. Значение NPROC находится в диапазоне от 50 до 200.
MAXUP
Определяет сколько конкурентных процессов может запустить непривилегированный пользователь. Это значение обычно находится в диапазоне от 15 до 40. Это значение не должно превышать значения NPROC (NPROC должно быть по крайней мере на 10% больше, чем MAXUP). Это значение для каждого идентификационного номера пользователя, а не для терминала. Например, если 12 человек вошли в систему с одинаковой идентификацией пользователя, то предел значения по умолчанию будет достигнут очень быстро.
MAXPMEM
Определяет максимальное количество физической памяти, используемой для страниц. Значение по умолчанию 0 означает, что используется вся доступная физическая память.
ULIMIT
Определяет количество 512-байтовых блоков в наибольшем файле, который может быть записан обычным пользователем. Значение по умолчанию 2048; то есть наибольший файл, который может записать обычный пользователь, имеет размер 1 мегабайт. Привилегированный пользователь может записать настолько большой файл, насколько позволяет система. Параметр ULIMIT не относится к чтению: каждый пользователь может читать файл любого размера.
SPTMAP
Задает размер массива элементов карты ядра, который используется для управления виртуальным адресным пространством ядра. Пользователи не должны менять этот параметр.
VHNDFRAC
Задает начальное значение для системной переменной VHANDL. VHANDL устанавливается следующим образом: максимальная память доступная пользователем делится на VHNDFRAC или на GPGSHI, в зависимости от того, какое из них больше. Значение VHANDL задается при работе программы vhand. Количество свободной доступной памяти сравнивается со значением VHANDL. Если свободной памяти меньше чем VHANDL, то активизируется процедура обмена страниц vhand. Значение по умолчанию для VHNDFRAC 16. Уменьшение этого значения приводит к большей активности процедуры обмена страниц; увеличение этого значения приводит к уменьшению активности процедуры обмена страниц. (Значение этого параметра должно быть больше 0% и меньше 25% доступной памяти).
AGEINTERVAL
Определяет число тактовых импульсов таймера, которое проходит до того как страница идущего процесса устареет.
GPGSLO
Определяет нижнюю границу свободной памяти в страницах для того, чтобы vhand начала обмен страниц для процесса. Значение по умолчанию 25. Увеличение этого значения приводит к повышению активности этой процедуры; уменьшение этого значения приводит к уменьшению активности этой процедуры (это значение должно быть целочисленным и больше или равно 0 и меньше GPGSHI).
GPGSHI
Определяет верхнюю границу свободной памяти в страницах для того, чтобы vhand остановила обмен страниц для процесса. Значение по умолчанию 40. Увеличение этого значения приводит к повышению активности этой процедуры; уменьшение этого значения приводит к уменьшению активности этой процедуры. (Это значение должно быть целочисленным и больше 0, больше GPGSLO и меньше 25% числа страниц доступной памяти).
GPGSMSK
Маска, используемая для процедуры страничного обмена. Значение по умолчанию 0x00000420. Это значение не должно изменяться.
MAXSC
Определяет максимальное число страниц, которые участвуют в одной операции свопинга. Значение по умолчанию 1.
MAXFC
Определяет максимальное число страниц, которые добавляются в список свободных в одной операции свопинга. Значение по умолчанию 1.
MAXUMEM
Определяет максимальный размер в страницах виртуального адресного пространства пользователя. Это значение не может быть больше 8192. Значение по умолчанию 2560.
MINARMEM
Определяет минимальное число страниц памяти, резервируемой для текстовых сегментов и сегментов данных пользовательских процессов.
MINASMEM
Определяет предел значения, которое указывает количество памяти и число страниц свопинга, резервируемых для системных целей (недоступно для текстовых сегментов и сегментов данных пользовательских процессов).
MINHIDUSTK
Определяет минимальное значение перемещения данных такое, что стек и данные пользователя могут разделять таблицу страниц. Это значение не должно изменяться.
MINUSTKGAP
Смотрите MINHIDUSTK, определенное выше.
MAXSLICE
Указывает в тактовых импульсах максимальный выделяемый квант времени для процессов пользователя. После того, как процесс исчерпает распределенный для него квант времени, этот процесс откладывается. Операционная система, затем выбирает процесс наивысшего приоритета и распределяет для него MAXSLICE тактовых импульсов. Обычно MAXSLICE - одна секунда (100 тактовых импульсов на генераторе WGS 6836).