Непрерывная оптимизация памяти
При непрерывной оптимизации памяти программа объединяет страницы памяти и увеличивает размер страницы в динамическом режиме.
Поддержка динамических страниц переменного размера
Поддержка динамических страниц переменного размера (DVPSS) в AIX версии 6.1 состоит в использовании страниц размером 4 Кб, когда обращения к памяти происходят редко, и страниц размером 64 Кб в местах частого обращения к памяти. Переключение размера страниц происходит автоматически, без участия пользователя.
DVPSS позволяет POWER6 использовать страницы разного размера в одном сегменте. Архитектура размещает страницы разного размера различным образом. Однако POWER6 поддерживает только два размера страниц - 4 Кб и 64 Кб.
По умолчанию размер страницы составляет 4 Кб, размер трансляции - 4 Кб. Трансляции происходят до тех пор, пока не произойдет обращение ко всем 16 4-килобайтным страницам (64 Кб). После обращения ко всем 16 страницам происходит проверка того, что они все находятся в одинаковом состоянии - наличие защиты от чтения/записи, защиты от выполнения, ключа защиты памяти и состояние защиты ввода-вывода). Если состояния одинаковые, то трансляции, размером 4 КБ, заменяются на 64 КБ.
Агент непрерывной оптимизации программы (CPOagent)
Недостаток метода DVPPS в операционной системе состоит в том, что для перехода на размер страницы 64 Кб система должна обратиться ко всем 16 страницам, размером 4 Кб. CPOagent позволяет снять это ограничение и объединять страницы в процессе работы программы. Эта функция относится к AIX 6.1 Technology уровня 6 и выше.
CPOagent расположен в каталоге:
usr/lib/perf/CPOagentСинтаксис
CPOagent [-f файл-конфигурации]
Флаг
| Флаг | Описание |
|---|---|
| -f | Изменяет имя файла конфигурации по умолчанию. Если эта опция не задана, используется файл /usr/lib/perf/CPOagent.cf. |
Файл конфигурации CPOagent
TCPU=<n1>
TMEM=<n2>
PATI=<n3>
PATM=<n4>
PPTS=<n5>
TOPM=<n6>
PFLR=<c>Описание полей конфигурации:
| Поля | Описание |
|---|---|
| TCPU | Задает ограничение процессорного времени, которое может использовать один процесс (в процентах) По умолчанию: 25 Минимально: 10 Максимально: 100 |
| TMEM | Задает ограничение памяти, используемой процессом (в Мб) По умолчанию: 1 Минимально: 1 |
| PATI | Задает периодичность анализа размера страницы (PATI), в минутах.
Временной интервал, с которым агент анализирует каждый процесс и определяет, нужно ли увеличить размер страницы для этого процесса. По умолчанию: 15 Минимально: 5 Максимально: 60 |
| PATM | Задает периодичность анализа страниц (PATM), в секундах.
Временной интервал, с которым собирается статистика по страницам и принимается решение: стоит ли объединить соседние страницы и перейти к большему размеру. По умолчанию: 30 Минимально: 5 Максимально: 180 |
| PPTS | Количество страниц для анализа на предмет объединения. Указывает количество страниц, к которым должно было произойти обращение, чтобы их объединили. По умолчанию: 4 Минимально: 4 |
| TOPM | Количество процессов, больше всех использующих процессорное время, в которых следует объединить страницы и увеличить размер страниц. По умолчанию: 2 Минимально: 1 |
| PFLR | Задает маску имен процессов, которые должен анализировать CPOagent на предмет возможности оптимизации. Переменная содержит символы подстановки для фильтрации всех процессов. |
Преимущества использования CPOagent
- Приложения можно настраивать в прозрачном режиме. При этом сами приложения изменять не требуется.
- Увеличение размера страницы происходит при выполнении ряда условий, указываемых администратором в файле CPOagent.cf, в зависимости от рабочей нагрузки на процессор и доступных ресурсов. Использование сценариев позволяет оптимизировать управление размером страниц. При этом поддержка динамических страниц переменного размера настраивается для каждого приложения отдельно.
StressEngine. Оно использует большие объемы памяти и большую долю процессорного времени.
Без CPOagent приложение StressEngine не сможет перейти в режим поддержки динамических страниц переменного размера, пока не обратится ко всем 16 страницам в одном из своих сегментов, и все страницы не перейдут в одинаковое состояние.
Размер страницы можно просмотреть в отчете о процессе с помощью команды svmon.# svmon -P 8454254 -O pgsz=on,unit=MB,segment=on
Ед. изм: Мб
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
8454254 StressEngine 157.87 42.3 0 157.84
Разм.Стр. Занято Закр. Пр.пдкчк. Виртуальн.
s 4 Кб 64.2 0.02 0 64.2
m 64 KB 93.7 42.3 0 93.7
Vsid Esid Тип Описание PSize Inuse Pin Pgsp Virtual
86f49b 2 раб. проц. прив. s 64.1 0.02 0 64.1
9000 d раб. данные общ. библ. m 47.9 0 0 47.9
8002 0 дерево раб. проц. m 45.8 42.3 0 45.8
children=939b1c, 0
80fdc3 f раб. данные общ. библ. s 0.09 0 0 0.09
85fd37 1 clnt code,/dev/hd1:10 s 0.02 0 - -Пусть запущен CPOagent, а файл CPOagent.cf выглядит следующим образом: --------------------------------------------
TCPU=25
TMEM=50
PATI=15
PATM=30
PPTS=4
TOPM=2
PFLR=Stress*
--------------------------------------------
Согласно файлу конфигурации, CPOagent работает с интервалом 15 минут (PATI =15). Через каждые 15 минут он проверяет, сколько памяти и процессорного времени использует процесс.
Первые 2 процесса (TOPM =2), в название которых входит строка Stress (PFLR = Stress*), использование процессора превышает 25% (TCPU = 25), а использование памяти - 50 Мб (TMEM = 50), являются претендентами на объединение смежных страниц и увеличение размера для последующих страниц. В каждом из процессов проверяются произвольные 4 страницы (PPTS = 4), а затем запускается алгоритм объединения страниц и увеличения размера страницы. Кроме того, статистика по страницам обновляется каждые 30 секунд (PATM =30), и на ее основании выбираются страницы - кандидаты на объединение.
Таким образом, после запуска CPOagent нет необходимости ждать, пока ко всем 16 в сегменте произойдет обращение. CPOagent определяет необходимость объединения страниц в приложении на основании конфигурации CPOagent.cf и том, сколько приложению требуется памяти и времени процессора. Объединенные страницы включаются в отчет о процессе, который можно просмотреть с помощью команды svmon.# svmon -P 8454254 -O pgsz=on,unit=MB,segment=on
Ед. изм: Мб
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
8454254 StressEngine 157.87 42.3 0 157.84
Разм.Стр. Занято Закр. Пр.пдкчк. Виртуальн.
s 4 Кб 64.2 0.02 0 64.2
m 64 KB 93.7 42.3 0 93.7
Vsid Esid Тип Описание PSize Inuse Pin Pgsp Virtual
86f49b 2 раб. проц. прив. sm 64.1 0.02 0 64.1
9000 d раб. данные общ. библ. m 47.9 0 0 47.9
8002 0 дерево раб. проц. m 45.8 42.3 0 45.8
children=939b1c, 0
80fdc3 f раб. данные общ. библ. sm 0.09 0 0 0.09
85fd37 1 clnt code,/dev/hd1:10 s 0.02 0 - -