[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Настройка алгоритма управления нагрузкой на память VMM с помощью команды schedtune

Функция управления нагрузкой на память VMM, описанная в соответствующем разделе, предотвращает перегрузку памяти в системе.

В старых версиях операционной системы не была предусмотрена защита от перегрузки памяти, поэтому если в системе запускалось большое число процессов, то оперативная память переполнялась и производительность системы резко снижалась. Впоследствии для защиты от перегрузки памяти был разработан алгоритм управления нагрузкой на память. Работа этого алгоритма зависит от нескольких параметров.

С помощью команды schedtune пользователь root может изменить критерий перегрузки памяти, критерий выбора процессов, работа которых будет остановлена, интервал времени между окончанием перегрузки и возобновлением работы процессов, а также минимальное число процессов, останавливать которые запрещено. Кроме того, с помощью этой команды можно восстановить значения параметров по умолчанию. Для того чтобы узнать, установлена ли в системе команда schedtune, вызовите следующую команду:

# lslpp -lI bos.adt.samples

Изменение параметров управления нагрузкой на память

Функция управления нагрузкой на память позволяет сгладить редкие пики активности, которые могут привести к перегрузке оперативной памяти. Она повышает производительность системы за счет уменьшения числа программ, которые могут одновременно выполняться в системе. Эта функция не предназначена для непрерывного применения в системе, объем оперативной памяти которой недостаточен для выполнения повседневных задач. Она ориентирована на пакетные задания, и не накладывает серьезных ограничений на работу системы. Для защиты наиболее важных приложений предусмотрены другие функции Управления рабочей схемой AIX.

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

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

Параметры управления нагрузкой на память всегда применяются в системе, пока они не будут явно изменены. По умолчанию для них установлены значения, которые были протестированы в системах с разной нагрузкой. Изменения значений параметров действуют только до следующей загрузки системы. Все действия по настройке управления нагрузкой на память могут выполняться только пользователем root. Команда schedtune позволяет системному администратору настроить алгоритм управления нагрузкой на память для отдельной рабочей схемы или выключить этот алгоритм. Исходный и объектный код команды schedtune находится в каталоге /usr/samples/kernel.

Примечание: Команда schedtune расположена в каталоге samples, так как она в значительной мере зависит от реализации VMM. Команда schedtune может применяться только с тем приложением VMM, которое относится к тому же выпуску операционной системы. Запуск команды schedtune в системе другого выпуска может привести к сбою в работе операционной системы. Кроме того, в разных выпусках операционной системы команда schedtune выполняет различные функции. Не переносите в новый выпуск операционной системы сценарии оболочки и записи /etc/inittab, содержащие команду schedtune, не убедившись в том, что такие сценарии будут правильно работать в новом выпуске системы.

Команда schedtune -? выдает краткое описание флагов и опций. Команда schedtune без параметров выдает отчет с текущими значениями параметров. Ниже приведен пример этого отчета:

# /usr/samples/kernel/schedtune
 
THRASH           SUSP       FORK      SCHED
-h    -p    -m      -w    -e      -f       -d       -r        -t       -s
SYS  PROC  MULTI   WAIT  GRACE   TICKS   SCHED_D  SCHED_R  TIMESLICE MAXSPIN
 0   4     2        1      2      10       16       16         1      16384
 
   CLOCK   SCHED_FIFO2   IDLE MIGRATION   FIXED_PRI
   -c          -a            -b              -F
%usDELTA   AFFINITY_LIM  BARRIER/16       GLOBAL(1)
  100           7             4               0

Первые пять параметров задают пороговые значения для алгоритма управления нагрузкой на память. Они определяют частоту выполнения операций и числовые ограничения. Если оперативная память перегружена, то применяются параметры PROC ( -p), MULTI (-m), WAIT (-w) и GRACE (-e). В остальных случаях значения этих параметров игнорируются. Если функция управления нагрузкой на память выключена, то эти значения никогда не применяются.

После тестирования работы системы с новыми значениями параметров управления нагрузкой на память, можно восстановить значения по умолчанию, вызвав команду schedtune -D.

После того как вы определите число процессов, которые должны работать даже во время пиковой нагрузки на систему, добавьте команду schedtune в конец файла /etc/inittab. В этом случае эта команда будет вызываться во время загрузки системы и переопределять значения по умолчанию, которые обычно устанавливаются при запуске системы. Например, для того чтобы в системе AIX версии 4 одновременно выполнялось не менее 4 программ, добавьте в файл /etc/inittab следующую строку:

schedtune:2:wait:/usr/samples/kernel/schedtune -m 4

Файл с этой строкой нельзя переносить в новый выпуск операционной системы, пока вы не ознакомитесь с документацией по этому выпуску.

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

Параметр h

Параметр h задает пороговое значение, превышение которого означает, что память перегружена. Механизм управления нагрузкой на память приостанавливает некоторые процессы, если это значение превышается в течение одной секунды. Пороговое значение определяет взаимосвязь между двумя показателями: числом страниц, записанных в пространство подкачки за последнюю секунду (po), и числом страниц, добавленных в список свободных страниц за последнюю секунду (fr). Значения обоих показателей можно узнать с помощью команды vmstat. Число страниц, записанных в пространство подкачки, обычно намного меньше числа страниц, добавленных в список свободных страниц. Память перегружена, если выполнено следующее соотношение:

po/fr > 1/h или po*h > fr

Команда schedtune -h 0 выключает управление нагрузкой на память. Если в системе не менее 128 Мб оперативной памяти, то значение по умолчанию равно 0. В противном случае значение по умолчанию равно 6. В системах с оперативной памятью объемом 128 Мб и более обычные функции VMM как правило лучше защищают от перегрузки памяти, чем функция управления нагрузкой на память.

В некоторых случаях требуется выключить функцию управления нагрузкой на память. Например, если для моделирования многопользовательской рабочей схемы применяется эмулятор терминала с функцией тайм-аута, то включение функции управления нагрузкой на память может привести к тому, что функция тайм-аута уничтожит некоторые ответы, передача которых процессу долго откладывалась. Другим примером является применение команды rmss для тестирования работы приложений в системе с меньшим объемом оперативной памяти. В этом случае функция управления нагрузкой на память может исказить результаты измерений.

Если выключение механизма управления нагрузкой на память приводит к учащению перегрузок системы (и, соответственно, к увеличению времени ответа), это означает, что механизм играет важную роль в поддержании работоспособности системы. В этом случае попробуйте настроить параметры управления нагрузкой на память, а если производительность системы не повысится, то увеличьте объем оперативной памяти.

Чем меньше значение h, тем выше порог обнаружения перегрузки. Это означает, что процессы начнут приостанавливаться за меньшее время до начала перегрузки памяти. Если в системе отношение po/fr невелико, то перегрузка маловероятна. Это правило справедливо для системы с любой конфигурацией.

Для того чтобы установить пороговое значение, равное 4, введите следующую команду:

# /usr/samples/kernel/schedtune -h 4

В данном случае увеличивается объем нагрузки на память системы, при достижении которой начинают приостанавливаться процессы.

Параметр p

Параметр p устанавливает критерий для отбора процессов, работа которых будет остановлена при возникновении перегрузки памяти. Он представляет собой отношение двух показателей, измеряемых для всех процессов: числа повторных обращений к страницам (r) и числа страничных ошибок, возникших при обращении процесса к страницам памяти за последнюю секунду (f). Высокая интенсивность повторных страничных ошибок означает перерасход памяти отдельным процессом. Работа процесса останавливается (процесс расходует слишком много памяти или усиливает общую перегрузку памяти), если выполнено следующее условие:

r/f > 1/p или r*p > f

По умолчанию значение параметра p равно 4. Это означает, что будет остановлена работа тех процессов, у которых отношение числа повторных обращений к числу страничных ошибок, возникших за последнюю секунду, больше 25 процентов. Чем меньше значение p, тем выше уровень перегрузки памяти, при достижении которого процесс может быть остановлен.

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

# /usr/samples/kernel/schedtune -p 0

Обратите внимание, что функция управления нагрузкой на память никогда не приостанавливает работу процессов с фиксированным приоритетом и процессов ядра.

Параметр m

Параметр m задает минимальное число активных процессов в системе. Активными процессами называются процессы, готовые к выполнению, и процессы, ожидающие загрузки или выгрузки страниц. Процессы, ожидающие возникновения событий, процессы, работа которых приостановлена, и процесс wait не относятся к активным.

Если минимальное число активных процессов будет равно m, то работа m процессов не будет приостановлена в случае перегрузки памяти. Предположим, что для работы системы как минимум десять активных процессов должны постоянно находиться в оперативной памяти, однако функция управления нагрузкой на память приостанавливает слишком много процессов. Если системный администратор вызовет команду schedtune -m 10, то число приостановленных процессов никогда не будет столь велико, что в системе останется менее десяти активных процессов. Значение параметра m не учитывает:

По умолчанию устанавливается значение m=2. Оно означает, что в оперативной памяти всегда будут находиться процессы ядра, все закрепленные процессы и как минимум два пользовательских процесса.

Хотя значение m=2 вполне подходит для однопользовательской системы, оно недостаточно для многопользовательской системы (например, сервера) с большим объемом оперативной памяти.

Если размер оперативной памяти системы составляет от 32 до 128 Мб, и в системе одновременно будет работать не менее пяти пользователей, то рекомендуется увеличить параметр управления нагрузкой на память, задающий минимальное число активных процессов.

Например, если в системе должно выполняться как минимум четыре приложения, активно использующих оперативную память, при условии, что 16 Мб памяти отведено операционной системе, а 25 процентов памяти занято страницами файлов, то вы можете увеличить минимальное число активных процессов с 2 до 4, вызвав следующую команду:

# /usr/samples/kernel/schedtune -m 4

Как правило, в таких системах оптимальная производительность достигается при значении m от 4 до 6. Уменьшение m, хотя оно и разрешено, может привести к тому, что ни один пользовательский процесс не будет работать.

Если вы знаете объем памяти, занимаемый приложениями, выполнение которых приводит к перегрузке памяти, то несложно определить значение m. Предположим, что перегрузка памяти возникает при выполнении нескольких экземпляров приложения размером M. Если размер оперативной памяти системы равен N, то параметру m нужно присвоить значение, приблизительно равное N/M. Если вы присвоите параметру m меньшее значение, то это приведет к излишнему ограничению числа процессов, которые на самом деле могли бы выполняться в системе.

Параметр w

Параметр w задает интервал времени в секундах, в течение которого отношение po/fr (см. раздел Параметр h) должно оставаться меньше 1/h, для того чтобы была возобновлена работа приостановленных процессов. Значение по умолчанию равно 1. Минимальное значение равно 0. Значение по умолчанию обеспечивает повторную активацию процессов сразу после восстановления нормальной работы системы. Слишком большое значение параметра w может привести к значительному увеличению времени ответа приостановленных процессов, тогда как процессор будет простаивать из-за недостатка активных процессов.

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

# /usr/samples/kernel/schedtune -w 2

Параметр e

После активации приостановленного процесса он будет работать минимум e секунд. В этом случае задержки, связанные с загрузкой страниц процесса в память при выполнении операций дискового ввода-вывода, будут оправданны. Значение e по умолчанию составляет 2 секунды.

Для того чтобы изменить этот параметр, вызовите следующую команду:

# /usr/samples/kernel/schedtune -e 1

Предположим, что перегрузка памяти в системе была случайно вызвана приложением, занимающим большой объем памяти. Пусть это приложение выполняется T секунд. Если параметру e присвоено значение по умолчанию (2 секунды), то в сильно загруженной системе приложению придется выполнять подкачку T/2 раз. В этом случае увеличение значения параметра e ускорит выполнение приложения. Чем быстрее будет выполнено это приложение, тем раньше повысится производительность системы.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]