Увеличение производительности AIX 5L: Настройка параметров памяти. Часть 1

Обзор памяти и параметров настройки памяти в AIX версии 5.3

Эта статья из трех частей о настройке памяти посвящена управлению параметрами памяти. Внимание в ней уделяется многим проблемам и различным примерам оптимизации эффективности памяти. Также в статье рассматриваются некоторые улучшения в AIX(R) версии 5.3. Возможно, настройка памяти является более сложной задачей для реализации, чем настройка центрального процессора, но тем не менее она не является менее важной. На AIX-серверах у вас больше возможностей для настройки памяти, чем для настройки любых других подсистем. Изменение нескольких параметров памяти в вашей системе может заметно увеличить производительность, в частности, если эти параметры еще не оптимизированы для среды разработки, в которой вы работаете. Первая статья из этого цикла представляет обзор памяти в AIX, включая обсуждение виртуальной памяти и менеджера виртуальной памяти (Virtual Memory Manager (VMM)).

Кен Милберг, UNIX-консультант Future Tech, составитель технической документации и эксперт по сайту, Future Tech

Кен Милберг занимает должности Technical Writer и Site Expert на сайте techtarget.com и предоставляет техническую информацию и поддержку по Linux на searchopensource.com. Он также является автором и техническим редактором IBM Systems Magazine, Open Edition. Кен обладает степенью бакалавра компьютерных и информационных наук и степенью магистра по менеджменту технологий Университета штата Мэрилэнд. Он является основателем и лидером группы пользователей POWER-AIX Лонг-Айленда. В течение многих лет он работал как в крупных, так и небольших организациях и занимал различные должности от директора по информационным технологиям до главного разработчика AIX. Сейчас он работает в Future Tech, бизнес-партнере IBM в Лонг-Айленде. Кен обладает званиями PMI certified Project Management Professional (PMP), IBM Certified Advanced Technical Expert (CATE, IBM System p5 2006), и Solaris Certified Network Administrator (SCNA). Вы можете связаться с ним по адресу kmilberg@gmail.com.



04.10.2007

Введение

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

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

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

Обзор памяти

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

Любое обсуждение памяти и AIX должно быть начато с описания менеджера виртуальной памяти. Новички в AIX иногда удивляются, услышав, что менеджер виртуальной памяти обслуживает запросы всех типов памяти системы, а не только виртуальной. Когда получен доступ к RAM, менеджер виртуальной памяти должен распределить пространство, даже когда доступно солидное количество физической памяти системы. Он реализует процесс предварительного распределения страниц. Используя этот метод, менеджер виртуальной памяти играет жизненно важную роль в управлении не только виртуальной, но и реальной памятью. Вот как это работает. В AIX все сегменты виртуальной памяти разбиты на страницы. По умолчанию размер страницы 4 Кб. Эти страницы могут быть размещены или в RAM, или в пространстве страниц (paging space) - виртуальной памяти, расположенной на диске. Менеджер виртуальной памяти также поддерживает free list - список, который определен как нераспределенные страничные блоки. Они используются для устранения ошибки отсутствия страницы. Это обычно небольшое количество нераспределенных страниц (которое вы определяете), которое менеджер виртуальной памяти использует для освобождения пространства памяти и перераспределения страничных блоков. Страницы виртуальной памяти, страничные блоки, которые должны быть перераспределены, выбираются с помощью алгоритма замещения страниц. Этот алгоритм определяет, какие страницы виртуальной памяти, находящиеся в RAM, вернули свои страничные блоки в список free list. AIX использует всю доступную память, кроме сконфигурированной как свободная (free list).

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

Вычислительная память.

Вычислительная память используется, пока ваши процессы воздействуют на компьютерную информацию. Эти рабочие сегменты временны и существуют только до тех пор, пока процесс выполняется или страница занята. У этих сегментов нет постоянного адреса на диске. Когда процесс завершается, физическое пространство и страницы освобождаются. При переходе большого объема памяти в доступные страницы, вы можете наблюдать его при мониторинге вашей системы. При уменьшении объема свободной физической памяти VMM перемещает из RAM в виртуальную память программы, которые давно не использовались, для того, чтобы освободить физическую память для по-настоящему важной работы.

Файловая память

Файловая память (в отличие от вычислительной памяти) использует постоянные сегменты, у которых есть постоянный адрес на жестком диске. Файлы с данными или исполняемые файлы соответствуют скорее постоянным сегментам, нежели рабочим сегментам. Файлы с данными могут относиться к файловым системам, таким как JFS, JFS2, или NFS. Они остаются в памяти до тех пор, пока файл не будет выгружен, страница не будет захвачена или файл не станет несвязным. После этого файл с данными копируется в RAM, а менеджер виртуальной памяти следит за тем, чтобы виртуальные страницы, используемые ранее этим файлом, были переписаны или использованы для хранения другого файла с данными. При наличии альтернативы большинство людей выберут файловую память, нежели вычислительную.

Когда процесс ссылается на страницу, которая находится на диске, она должны быть пронумерована, что, в свою очередь, может стать причиной откачки других страниц из оперативной памяти. Менеджер виртуальной памяти постоянно отслеживает и пытается удалять в фоновом режиме страничные блоки, на которые давно не ссылались, с помощью алгоритма замещения страниц, который я описывал ранее. Он также помогает определить "пробуксовку", которая случается из-за чрезмерного количества запросов на подкачку страниц. VMM содержит алгоритм контроля загруженности памяти, который может определить "пробуксовку" системы и попытаться исправить ситуацию. Неразумное использование интенсивной подкачки может буквально заставить систему бездействовать, в то время как ядро будет занято выделением участков памяти для страниц, которые фактически никак не используются.

Настройка

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

До появления AIX 5L™ вам пришлось бы использовать команду vmtune для настройки менеджера виртуальной памяти (VMM) в вашей системе. С тех пор как команда vmo появилась в AIX версии 5.2, vmtune фактически не использовалась до появления AIX версии 5.3. С AIX версии 5.3, вы должны полностью пересмотреть ваши предыдущие предпочтения в настройке. Большинство актуальных параметров все те же, но присутствует ряд фундаментальных изменений, которые вы должны осознать.

Давайте обсудим одно важное изменение в AIX 5L, имеющее отношение к страничным блокам. Начиная с процессоров POWER4, AIX поддерживает страницы размером 16 MB. Чип POWER5 поддерживает размеры страниц виртуальной памяти: 4 KB, 64 KB, 16 MB и 16 GB. Изменив vmo, вы можете настроить систему для обеспечения использования больших страниц, что может поднять производительность системы главным образом в приложениях, интенсивно использующих память. Увеличение производительности происходит из-за сокращения потерь в буфере быстрого преобразования адреса (Translation Lookaside Buffer(TLB)), которые случаются из-за того, что TLB может указывать на более широкий диапазон виртуальной памяти. Например, база данных Oracle, или оперативная обработка транзакций (Online Transaction Processing (OLTP)), или информационное хранилище могут работать быстрее, когда используют большие страницы. Это происходит потому, что Oracle использует большое количество виртуальной памяти, в частности, в отношении Глобальной системной области (System Global Area (SGA)). Пример, рассмотренный мной ранее, является сервером базы данных Oracle, работающий на p550 LPAR и AIX версии 5.3. Система используется для оперативной обработки транзакций и хранилища данных.

Команда в Примере 1 распределяет 16777216 байт для предоставления возможности использования виртуальных страниц в количестве 128 штук.

Пример 1. Распределение байтов.
# vmo -r -o lgpg_size=16777216 lgpg_regions=128

Самые важные настройки vmo - это minperm и maxperm. Установка этих параметров определяет соответствующее значение для вашей системы для уверенности в том, что она настроена таким образом, чтобы выбрать либо вычислительную память либо файловую память. В большинстве случаев вы не захотите нумеровать рабочие сегменты, так как это может стать причиной ненужного разбиения на страницы, что понизит производительность. Вот как это работает: если ваши файловые страницы (numperm%) больше, чем текущее максимально разрешенное значение maxperm%, то алгоритм замещения страниц только захватит файловые страницы. Когда файловые страницы меньше, чем минимальное значение minperm, алгоритм замещения страниц может захватить страницы из файловой и вычислительной памяти. Если размеры файловых страниц держатся в пределах минимального и максимального значения, будут захватываться только файловые страницы пока их число больше, чем число страниц в вычислительной памяти. Другая точка зрения на эту проблему: если значение параметра numperm, больше чем maxperm, то вы можете начать захватывать страницы из постоянного хранилища. Основанный на этих методах старый подход к настройке ваших параметров minperm и maxperm состоит в приведении maxperm к невысокому количеству (например, меньше <20) и minperm меньше <=10. Вот так вы должны были настраивать ваш сервер базы данных.

Этот подход заменен новым, который устанавливает maxperm в наивысшее значение (например, >80) и убеждается в том, что lru_file_repage установлен на ноль. lru_file_repage впервые появился в AIX версии 5.2 с ML4 и в ML1 от AIX версии 5.3. Этот параметр указывает на то, должен или нет менеджер виртуальной памяти выполнить пересчет страниц и какой тип памяти ему следует захватывать. По умолчанию этот параметр выставлен в 1, поэтому вам надо поменять его. Когда этот параметр установлен в 0, VMM захватывает только страницы файловой памяти, а не вычислительной. Этот подход сработает, если numperm меньше чем minperm или больше чем maxperm, вот почему вы теперь можете захотеть, чтобы maxperm был высоким, а minperm был низким. Не будем забывать тот факт, что первичная причина, по которой нам понадобилось настроить это значение - наше желание защитить от необдуманного использования вычислительную память. Возвращаясь назад, к примеру, Oracle использует свой собственный кэш, и использование кэширования файлов, предоставляемого AIX, для этих целей, только вызовет беспорядок, который вы хотели бы устранить. Если в этом сценарии понизить значение maxperm, то это вызовет ошибку в приложении, кэширующем запущенные программы.

Пример 2 устанавливает эти важные параметры настройки.

Пример 2. Установка настроечных параметров
vmo -p -o minperm%=5
vmo -p -o maxperm%=90
vmo -p -o maxclient%=90

Хотя вам придется менять эти параметры, сейчас оставьте для strict_maxperm и strict_maxclient значения по умолчанию. Если значение strict_maxperm поменяли на 1, это накладывает жесткий предел на количество памяти, которое может быть использовано для постоянного файлового кэша. Это можно сделать путем присвоения maxperm значения верхнего предела кэша. Сейчас это не особенно нужно, потому что изменение значения параметра lru_file_repage - гораздо более эффективный способ настройки, поэтому нет смысла использования файлового кэширования AIX.

Два других параметра большой важности - minfree и maxfree. Если число страниц в вашем списке свободной памяти упало ниже значения параметра minfree, менеджер виртуальной памяти начинает захватывать страницы (только для того, чтобы добавить их в список свободной памяти), а это плохо. Он будет захватывать страницы до тех пор, пока список свободной памяти будет содержать по меньшей мере число страниц, указанное в параметре maxfree.

В более старых версиях AIX, когда значение по умолчанию параметра minfree было установлено на 120, вы в большинстве случаев увидели бы, что список свободной памяти содержит не более 120 позиций, что привело бы к более активному, чем необходимо, выделению страниц, и, что хуже, свободные страничные блоки, которые нужны потокам, оказались бы заблокированными, потому что значение параметра слишком мало. Для решения этой проблемы значения по умолчанию minfree и maxfree в AIX версии 5.3 были повышены до 960 и 1088 соответственно. Если вы работаете в AIX версии 5.2 или ниже, я рекомендовал бы вам эти настройки, которые можно изменить вручную, используя команды из Примера 3.

Пример 3. Установка вручную параметров minfree и maxfree
vmo -p -o minfree=960
vmo -p -o maxfree=1088

Улучшения и изменения работы памяти в AIX версии 5.3

Давайте рассмотрим некоторые изменения, касающиеся памяти, сделанные в AIX версии 5.3. Надлежащее использование расширенных функциональных возможностей управления памятью в AIX версии 5.3 безусловно может повлиять на возможность эффективной настройки вашей системы. Кроме того, давайте обсудим очистку пространства памяти, динамическую функцию xmalloc, родственность памяти и функцию malloc с модификацией Ватсона (Watson malloc).

  • Очистка пространства памяти. В определенных условиях это свойство позволяет системе освободить пространство на диске, используемое для подкачки страниц, так что вам не надо его конфигурировать. Эта особенность доступна только при использовании политики отложенного распределения памяти для подкачки файлов.
  • Динамическая отладка xmalloc (xmdbg). Эта особенность поднимает надежность системы за счет всех возможностей для диагностирования распределения памяти. Это позволяет клиентам изменять количество памяти, отведенное под диагностирование, без перезагрузки.
  • Watson malloc. Эта новая malloc-подсистема быстрее обрабатывает небольшие запросы согласно реализации разбиения памяти по умолчанию. И это происходит с очень небольшими потерями в памяти по сравнению с традиционным методом Йорктауна (Yorktown). Несколько новых особенностей, дающих возможность исправлять ошибки в распределении памяти, были добавлены в средства отладки.
  • Поддержка страниц разных размеров. Как обсуждалось ранее в разделе Настройка, теперь доступно 4 разных размера страниц. Поддерживаемые размеры приведены ниже:
    • 4KB;
    • 64KB;
    • 16MB;
    • 16GB;
  • Инструментальные средства мониторинга менеджера виртуальной памяти (VMM). Инструментарии для мониторинга, такие как vmstat и svmon, были настроены с поправкой на возможности создания виртуальной среды архитектуры POWER5. Сейчас они также поддерживают некоторые из улучшений, описанных в этом разделе. В части 2 этого цикла статей я рассмотрю изменения более подробно, с целью погрузить вас в детали инструментариев для мониторинга памяти в AIX, чтобы определить их "узкие места" и проанализировать тенденцию, по которой их развивали.
  • Родственность памяти. В AIX Версии 5.3 Вы можете больше не отключать родственность памяти, как это было в AIX Версии 5.2. Эта особенность обеспечивает возможность распределить память для процесса из модуля памяти, который содержит программу, что вызвала ошибку из-за отсутствия страницы. Это выполняется таким образом, что программа получает доступ к памяти, отведенной к ее собственному модулю, раньше, чем она начнет искать эту память в других модулях, чтобы поднять свою производительность. Чтобы отключить поддержку родственности памяти в AIX Версии 5.2, используйте следующую команду vmo: vmo -o memory_affinity=0

Также следует помнить, что вам больше не нужно сохранять никакие из ваших настроек в файле rc.tune. Новый подход состоит в использовании /etc/tunables, что определенно является улучшением. Но пока эта особенность реализована только в AIX версии 5.2, а не в версии 5.3, что плохо.

Резюме

Как было рассмотрено, прежде чем вы настроите или даже начнете мониторинг системы AIX, следует сохранить данные до изменений. После того как вы настроите все необходимое, вы должны собрать новые данные и проанализировать результаты изменений. Без информации такого рода (сравнительный анализ "до" и "после") вы никогда не поймете истинного влияния настройки. В первой части этого цикла вы узнали все о менеджере виртуальной памяти системы AIX и о том, как он работает. Вы также настроили Oracle-систему для оптимизации использования подсистемы памяти. Вы узнали некоторые важные параметры ядра, каковы их функции и как их настроить. И по ходу этого процесса обучения вы узнали о некоторых фундаментальных изменениях, сделанных за недавние годы, относительно подхода к основным параметрам, и об улучшениях, сделанных в AIX версии 5.3, применительно к памяти.

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

Ресурсы

Научиться

  • Optimizing AIX 5L performance: Monitoring your CPU: ознакомьтесь с другими статьями этого цикла.
  • Optimizing AIX 5L performance: Tuning your memory settings, Part 1: ознакомьтесь с оригиналом статьи. (EN)
  • AIX memory affinity support: узнайте больше об организации памяти в AIX из IBM System p™ и ИнфоЦентра AIX. (EN)
  • Tuning IBM AIX5L for an Oracle database: эта работа рассматривает анализ производительности и настройку для различных степеней рабочей нагрузки на Oracle, а также и конфигурации установки AIX 5L.(EN)
  • IBM Redbooks: ознакомьтесь с книгой "Database Performance Tuning on AIX",которая создана в помощь системным администраторам, разработчикам и предназначена для поддержки, мониторинга, реализации и настройки на оптимальную производительность на AIX Relational Database Management System (RDMBS).(EN)
  • Test 234: AIX 5L Performance and Systems Tuning: будьте готовы пройти этот тест, являющийся частью сертификационной программы IBM.(EN)
  • High-Performance Architecture with a History: прочтите эту работу для краткого ознакомления с архитектурой PowerPC®.(EN)
  • "Power to the People" (developerWorks, май 2004): прочитайте статью об истории изготовления микросхем в IBM. (EN)
  • "Processor Affinity on AIX" (developerWorks, ноябрь 2006): Использование настройки родственности у процессов для связывания или разрывания связей у потоков может помочь вам найти первопричину зависаний или проблемы взаимоблокировки. Прочитайте эту статью, чтобы узнать как использовать родственность процессоров и заставлять работать процессу только на конкретном центральном процессоре. (EN)
  • "CPU Monitoring and Tuning" (март, 2002): прочитайте эту статью, чтобы узнать, как стандартные инструментальные средства AIX могут помочь вам определить "узкие места" центрального процесса. (EN)
  • "AIX 5L Version 5.3: What's in it for you?" (developerWorks, июнь 2005): узнайте о наиболее полезных возможностях в AIX 5L версии 5.3.
  • Operating System and Device Management(EN): этот документ от IBM предоставляет пользователям и системным администраторам полную информацию, которая может повлиять на то, какие вы выберете опции когда начнете, например, делать резервную копию данных или восстанавливать систему, управлять физическими дисками и логическими разделами, назначать размер для виртуальной страницы.
  • "nmon performance: A free tool to analyze AIX and Linux® performance" (developerWorks, февраль 2006): этот инструментарий выводит на экран большое количество информации.(EN)
  • "nmon analyser — A free tool to produce AIX performance reports" (developerWorks, апрель 2006): прочитайте эту статью,чтобы узнать как составлять информативные отчеты из данных, предоставляемых nmon. (EN)
  • IBM Redbooks: всестороннее руководство по эффективному использованию мониторинга и инструментальных средств настройки, которые предоставляются AIX 5L версии 5.3, прочитайте AIX 5L Practical Performance Tools and Tuning Guide.(EN)
  • The AIX 5L Differences Guide Version 5.3 Edition (developerWorks, декабрь 2004): Прочтите о различиях между AIX 5L версии 5.3 и AIX 5L версии 5.2.(EN)
  • Ознакомьтесь с другими статьями и обучающими курсами, написанными Кеном Милбергом (Ken Milberg):
  • Popular content: ознакомьтесь с интересными статьями о AIX и UNIX.(EN)
  • AIX и UNIX: сообщество developerWorks предоставляет много информации, относящийся ко всем аспектам системного администрирования AIX и поднятия ваших навыков в работе с UNIX.
  • Новичок в AIX и UNIX?: посетите страницу AIX и UNIX для новичков чтобы узнать больше о AIX и UNIX.
  • AIX 5L Wiki: среда сотрудничества в области технической информации, связанной с AIX.(EN)
  • Разделы библиотеки информации по AIX и UNIX:
  • developerWorks technical events and webcasts(EN): будьте в курсе последних событий и webcast-конференций сообщества developerWorks.
  • Podcasts: оставайтесь на связи с техническими экспертами IBM.(EN)
  • Future Tech: посетите сайт компании Future Tech, чтобы узнать больше об их последних предложениях.(EN)

Получить продукты и технологии

  • IBM trial software: создайте ваше следующее приложение при помощи программного обеспечения, загруженного прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=259677
ArticleTitle=Увеличение производительности AIX 5L: Настройка параметров памяти. Часть 1
publish-date=10042007