Процессы, управление памятью и свопинг
Процедура обмена страниц, 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).