 | Уровень сложности: средний Сунил Камас, менеджер по OLTP-производительности, IBM Пунит Шах, программист, IBM
01.01.2008 Узнайте как IBM® DB2® 9 для платформ Linux®, UNIX® и Windows® работает с виртуальными страницами различных размеров. Операционная система IBM AIX 5L™ с процессорами архитектуры POWER5+™ реализует поддержку 64-килобайтных страниц, свойства которых идентичны свойствам используемых в настоящее время по умолчанию 4-килобайтных страниц. Кроме того, в версии AIX 5L 5.3 TL04 для этой аппаратной платформы представлена возможность поддержки "гигантских" 16-гигабайтных виртуальных страниц. DB2 9 автоматически использует 64-килобайтные страницы для обеспечения наивысшей производительности приложений баз данных на платформе AIX. Кроме того, DB2 также поддерживает возможность использования 16-ГБ страниц памяти.
Введение
По различным причинам большинство современных операционных систем выполняют программы в виртуальном адресном пространстве. Виртуальный адрес предоставляет множество преимуществ, включая гибкость, изоляцию, переносимость, возможность использовать больше памяти, нежели доступно физической, и, в некоторых случаях, независимость от конфигурации аппаратного обеспечения.
Однако выполнение программ в виртуальном адресном пространстве приводит к соответствующим потерям в производительности. Программы (включая DB2) отображают адреса физической памяти в адреса виртуальной. Каждый раз при запросе инструкций к программе или данных адрес виртуальной памяти конвертируется в адрес физической памяти. Это преобразование проводится в таблице страниц и увеличивает продолжительность выполнения программы. Размер таблицы страниц обратно пропорционален самому размеру станиц, что означает, что чем меньше размер страницы, тем больше размер таблицы страниц и, соответственно, тем больше ненужные затраты времени.
В течение многих лет стандартный размер виртуальной страницы для многих ОС, включая AIX 5L, составлял 4 килобайта. В настоящее время увеличение объемов использующихся данных и увеличение емкости кэша процессора сделали размер страницы в 4 КБ не очень эффективным. Для увеличения производительности приложений, которые выполняют обработку больших объемов данных, системы на платформе IBM POWER5+, работающие под управлением AIX 5L V5.3 TL04 (или более поздних версий этой ОС), предоставляют поддержку страниц виртуальной памяти различных размеров. Процессор POWER™ и операционная система AIX 5L (с момента появления AIX 5L V5.1) поддерживают два размера страниц - 4 КБ и 16 МБ. В дополнение к этим двум размерам сейчас реализована поддержка 64 КБ и 16 ГБ страниц памяти. Страницы виртуальной памяти размером 64 КБ и 4 КБ имеют схожую реализацию в ОС (а именно, страницы не закрепляются в памяти и допускают подкачку.)
Чтобы воспользоваться преимуществами новых размеров, DB2 9 автоматически определяет доступный для использования в ОС размер страниц виртуальной памяти. Если возможно, DB2 задает размер по умолчанию 64 КБ как для процессов, так и для всей совместно использующейся памяти. DB2 имеет поддержку 16 ГБ страниц с момента выхода IBM DB2 Universal Database™ (UDB) V8.2.5.
Некоторые аспекты рассматриваемой проблемы
Давайте взглянем на механизм работы процесса и узнаем, почему большой размер страниц виртуальной памяти важен для таких масштабных коммерческих приложений как DB2.
Механизм работы процесса
Прежде чем любая программа сможет начать свою работу, загрузчик операционной системы должен загрузить её в оперативную память. Память, необходимая для выполнения процессов в среде AIX 5L, делится на различные диапазоны. Каждому процессу доступны следующие области памяти: текст, стек, и куча/данные, каждая из которых предназначена для специальных целей:
- Область текстовой памяти (text) хранит инструкции процессов.
- Область кучи (data/heap) содержит динамически распределяемую память и некоторые данные общего пользования для программ.
-
Стек (stack) используется для адресов, возвращаемых различными подпрограммами, и для хранения служебных данных.
Область памяти для общего пользования, называемая совместно используемой памятью, является средством общения между процессами, которое широко используется DB2 и другими мультипроцессными приложениями. DB2 использует сегменты совместно используемой памяти для эффективной обработки и хранения данных (в основном для буферного пула) взаимодействующими между собой процессами DB2, например DB2-агентами. DB2 также использует совместно используемую память для ряда других куч.
Как упоминалось ранее, адреса памяти, на которые ссылаются процессы, являются виртуальными и требуют преобразования в адреса физической памяти. Для каждого выполняющегося процесса сопоставление адреса физической и виртуальной памяти осуществляется в специальной структуре данных, называемой таблицей страниц. Число записей в таблице страниц пропорционально размеру виртуальной памяти. В результате размер таблицы страниц достаточно значительный. Для увеличения скорости преобразования страниц на одном чипе с процессором имеется кэш (processor-on-a-chip (PoC) cache), для которого реализована логика буфера трансляции (translation lookaside buffer (TLB)). TLB - это относительно небольшая область кэша, где хранятся пересчитанные значения для наиболее часто используемых адресов в ожидании их повторного использования.
Преимущества больших страниц виртуальной памяти
Помимо тактовой частоты работы процессора важным показателем работы процессора является число тактов, необходимых для выполнения одной инструкции (cycles per instruction (CPI)). CPI показывает, сколько времени уходит на выполнение одной инструкции. Обычно отображаемая величина CPI соответствует среднему или нормализованному CPI. Чем меньше показатель CPI, тем быстрее выполнение процедур и тем выше производительность системы.
Частое использование содержимого TLB-кэша означает более быстрое преобразование адресов и, соответственно, более быстрый доступ к физической памяти. Если в TLB не было обнаружено необходимого адреса, приходится обращаться к таблице страниц, которая расположена в главной, оперативной памяти, что подразумевает больше действий со стороны процессора. Увеличение размера адресного пространства процесса (с 32-х до 64-х байтного адресного пространства), которое встречается все чаще, увеличивает таблицу страниц и уменьшает производительность при преобразовании адресов.
Есть два способа решить эту проблему. Первый способ - увеличить размер TLB-кэша. Однако ввиду конструктивных ограничений размер TLB-кэша нельзя значительно увеличить. Другим способом является уменьшение размера таблицы страниц путем уменьшения количества записей в ней. Как было указано выше, размер таблицы страниц обратно пропорционален размеру виртуальной страницы, что означает, что любое увеличение размера страницы виртуальной памяти уменьшает размер таблицы страниц, и, кроме того, позволяет TLB выполнять преобразование одного и того же адреса чаще. Большая страница виртуальной памяти способна хранить больше данных.
Архитектура процессоров POWER5+, работающих под управлением операционной системы AIX 5L, решает проблему таблицы страниц путем одновременного использования страниц виртуальной памяти различных размеров. Приложение может выбрать размер страницы, который соответствует ее рабочей нагрузке. Как будет показано ниже в статье, это очень важное условие, которое может оказать значительное влияние на производительность.
Поддержка различных размеров страниц в AIX 5L
В этом разделе представлен краткий обзор поддержки операционной системой AIX 5L страниц виртуальной памяти разных размеров. Как упоминалось во введении, процессор POWER5+ и ОС AIX 5L V5.3 впервые реализуют поддержку двух новых размеров страниц: 64 КБ и 16 ГБ. Страницы размером 16 ГБ следует использовать только в очень высокопроизводительных средах, тогда как страницы размером 64 КБ можно использовать повсеместно. На практике в большинстве задач наибольшую выгоду принесет использование страниц размером 64 КБ, а не 4 КБ. Мы рассмотрим преимущества от использования страниц размером 64 КБ с DB2 позже в этой статье. Использование 16 ГБ страниц требует наличия консоли управления аппаратным обеспечением IBM (IBM Hardware Management Console (HMC)) версии 5 релиза 2.
При работе 64-разрядного ядра AIX 5L с технологическим уровнем 5300-04 на платформе POWER5+ поддержка 64 КБ страниц осуществляется автоматически, без каких-либо дополнительных настроек системы.
Отметим, что для 64-КБ страниц легко осуществляется подкачка средствами системы и размер пула 64 КБ страниц является динамическим. Операционная система AIX 5L полностью управляет размером пула страниц и автоматически, по мере надобности, задает необходимые количества 4 КБ страниц и 64 КБ страниц. Однако 16 МБ и 16 ГБ страницы требуют специальной настройки ОС AIX 5L при помощи команды vmo. Более подробную информацию о поддержке AIX виртуальных страниц различных размеров можно найти в разделе Ресурсы этой статьи.
В AIX 5L можно контролировать число 4 КБ и 64 КБ страниц в системе с помощью команд svmon и vmstat. Например, для отображения статистики процесса DB2 о размере каждой страницы можно использовать флаг -P с идентификатором процесса (PID) DB2 для команды svmon:
# svmon -P 852128
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
852128 db2sysc 372534 65669 0 371671 Y N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 4521 0 0 3657
m 64 KB 302477 133 0 302478
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
0 0 work kernel (lgpg_vsid=0) L 65536 65536 0 65536
Addr Range: 0..65535
2e845f 78000048 work default shmat/mmap m 4096 0 0 4096
Addr Range: 0..4095
1987b1 78000021 work default shmat/mmap m 4096 0 0 4096
... output snipped ...
|
DB2 и страницы различных размеров
Начиная с версии 9, DB2 автоматически обнаруживает и использует 64 КБ страницы для выбранных участков памяти. Предыдущий релиз DB2 использовал по умолчанию 4 КБ размер страницы и также предоставлял возможность настройки и использования 16 МБ страниц на системах, которые поддерживают такой размер. Архитектура POWER5+ DB2 UDB V8.2.5 также предоставляет возможность настройки 16 ГБ страниц.
В DB2 память системы интенсивнее всего используется буферным пулом, который по сути представляет собой отдельный большой совместно используемый участок памяти. DB2 поддерживает для буферного пула все размеры страниц (4 КБ, 64 КБ, 16 МБ и 16 ГБ) которые доступны ОС, под управлением которой работает DB2. DB2 9 автоматически определяет, поддерживает ли ОС AIX 5L и процессор POWER5 64 КБ страницы, и, если есть возможность, позволяет использовать 64 КБ страницы для всей совместно используемой памяти DB2, включая буферный пул, буфер регистрации, кучу утилит, кэш пакетов, кэш каталогов, список блокировок. В разделе Производительность этой статьи представлены подробности об улучшениях в производительности, достигаемых при использовании различных размеров страниц, поддерживаемых AIX, для рабочих нагрузок DB2.
Кроме совместно используемой памяти, DB2 также позволяет настроить память, выделяемой для агента, в 16 МБ страницах. Память агента в основном потребляется в ходе сортировки "кучи", которая выполняется агентом для сортировки строк в ходе обработки запроса. Однако DB2 не поддерживает по умолчанию 64 КБ страницы виртуальной памяти для собственной памяти агента и не позволяет использовать совместно с памятью агента страницы размером 16 ГБ.
Хотя ОС AIX 5L и DB2 поддерживают работу со страницами различных размеров, настройка использования 16 МБ или 16 ГБ страниц требует специального аппаратного обеспечения и специальных настроек ОС AIX 5L и DB2. Чтобы DB2 использовала предварительно сконфигурированные 16 МБ или 16 ГБ страницы, используйте переменные реестра DB2_LARGE_PAGE_MEM=DB или DB2_LARGE_PAGE_MEM=DB:16GB. В документации по DB2 и AIX 5L даны инструкции, как сконфигурировать аппаратное обеспечение и ОС AIX 5L для поддержки страниц памяти размером 16 МБ или 16 ГБ.
Использование как 16 МБ, так и 16 ГБ страниц требует аккуратной разбивки памяти, которая будет потом распределена между пулами виртуальной памяти AIX. Выполнять разбиение памяти надо чрезвычайно осторожно, поскольку неверная настройка использования 16 МБ и 16 ГБ страниц может привести к чрезмерной подкачке пулов страниц виртуальной памяти размером 64 КБ и 4 КБ. Как только происходит распределение 16 МБ и 16 ГБ страниц, они закрепляются в памяти, и ОС AIX 5L не может динамически перемещать эти страницы между пулами больших страниц (по 16 МБ или 16 ГБ) и пулами малых страниц (по 4 КБ и 64 КБ). Однако если под 16 ГБ или 16 МБ пул было отведено достаточно памяти, рабочая нагрузка будет выполняться более эффективно.
С момента внедрения 64 КБ страниц приложения на основе DB2, работающие на платформе, основанной на процессоре POWER5+ с уровнем технологии AIX 5L 5300-04, могут автоматически пользоваться преимуществами больших виртуальных страниц без какого-либо вмешательства со стороны пользователя или администратора. Нет никакой необходимости закреплять страницы по 64 КБ в памяти, поскольку ОС AIX 5L автоматически перемещает страницы между пулами страниц размером 4 КБ и 64 КБ.
В дополнение ко всем доступным областям памяти, совместно используемым приложениями DB2, DB2 9 автоматически использует 64 КБ страницы для своего стека процессов, таким образом предоставляя большую производительность без каких-либо специальных действий со стороны пользователя.
Производительность
Предыдущие разделы этой статьи рассматривали ключевые преимущества для производительности от страниц виртуальной памяти большого размера и их применение в DB2. В этом разделе представлены показатели производительности, замеренные на DB2 9, при использовании оперативной обработки транзакций (OLTP).
Показатели производительности, представленные нами, были получены для систем двух типов:
- IBM System p5 570 Model 9117-570 с 16 процессорами POWER5+, работающими на частоте 2.2 ГГц каждый, с 512 ГБ оперативной памяти
- 8ТB база данных.
- 473 ГБ (из общего количества 512 ГБ RAM) были распределены для буферных пулов DB2.
- IBM System p5 520 Express Model 9131-52A с двумя процессорами POWER5+, работающими на частоте 1.9 ГГц, с 32 ГБ оперативной памяти
- 25 ГБ база данных.
- 18 ГБ памяти из общего объема оперативной памяти 32 ГБ выделены для буферных пулов DB2.
На диаграмме 1 показаны сравнительные улучшения в производительности в сравнении с 4 КБ страницами для страниц других размеров, которые поддерживаются DB2 и ОС AIX 5L. Эти измерения были сделаны на 16-канальной системе p5-570. Было отмечено улучшение в производительности на 13% с размерами страниц 64 КБ по сравнению с 4 КБ страницами. Кроме того, при переходе от страниц по 64 КБ к страницам по 16 МБ наблюдалось увеличение производительности на 8%. Наконец, при переходе со страниц по 16 МБ на страницы по 16 ГБ было замечено увеличение производительности на 3%. Пропускная способность DB2 оценивалась по показателю транзакций в минуту.
Диаграмма 1. Сравнительная диаграмма улучшения производительности для 4 КБ страниц и страниц других размеров
На диаграмме 2 показана корреляция данных из диаграммы 1 с уменьшением показателя CPI и соответствующим ему уменьшением количества обращений к буферу быстрого преобразования адресов (TLB). Высокое значение CPI означает, что для выполнения одной инструкции больше циклов процессора. Накладные расходы, связанные с неудачными обращениями к TLB, являются одной из важных составляющих неэффективного соотношения CPI. Увеличение удачного количества обращений к TLB-кэшу улучшает показатель CPI, и, соответственно, производительность программы.
Как показано в диаграмме 2, с 64 КБ страницами показатель CPI рабочей нагрузки DB2 увеличивается на 11%. Количество неудачных обращений к TLB уменьшается на 13% по сравнению с теми же измерениями для 4 КБ страниц, что приводит к увеличению общей производительности при выполнении рабочей нагрузки на 13%. Для 16 МБ и 16 ГБ страниц дальнейшее увеличение числа успешных обращений к TLB ведет к пропорциональному увеличению показателя CPI, и, соответственно, большей суммарной производительности.
Диаграмма 2. Сопоставление показателей CPI и TLB для страниц размером 4 КБ и других размеров
Из диаграмм 1 и 2 можно сделать логический вывод, что использование 64 КБ страниц дает большее увеличение производительности для приложений DB2. Однако необходимо представлять, какого увеличения производительности можно ожидать для каждой конкретной рабочей нагрузки, поскольку это увеличение достаточно широко варьирует в зависимости от размера базы данных, доступной оперативной памяти и памяти, выделенной под буферный пул DB2. Чтобы получить процентную оценку выгоды от увеличения производительности при использовании 64 КБ страниц, было проведено несколько тестов для одной и той же рабочей нагрузки на системе p5-520 с 32 ГБ оперативной памяти. При выполнении этого теста только 18 ГБ из доступных 32 ГБ оперативной памяти было отдано буферному пулу DB2.
Диаграмма 3 показывает процентную оценку увеличения пропускной способности, достигнутого для системы p5-520, в сравнении с результатами для p5-570 (где под буферные пулы использовалось 473 ГБ оперативной памяти). По сравнению с 4 КБ страницами использование страниц по 64 КБ дает увеличение производительности на 5%.
Диаграмма 3. Улучшения в производительности при использовании 64 КБ страниц для систем с 32 ГБ и 512 ГБ оперативной памяти
Такое различие в улучшении производительности предсказуемо, потому что число обращений к TLB-кэшу возрастает с увеличением размера базы данных и количества памяти, выделенной под буферный пул DB2.
Заключение
DB2 9 автоматически использует страницы памяти по 64 КБ, когда работает под управлением ОС AIX 5L V5.3 TL04 на платформе, поддерживающей этот размер страниц. Применение страниц большего размера дает значительное улучшение производительности без каких-либо дополнительных настроек. Увеличение может варьировать в довольно широком диапазоне - от 5 до 13% в зависимости от рабочей нагрузки. На системах с большим количеством памяти более значительное увеличение производительности можно получить, ограничив затраты ресурсов системы на преобразования адресов виртуальной памяти в адреса физической памяти за счет эффективного использования TLB-кэша. Кроме того, DB2 также позволяет выполнять пользовательскую настройку страниц памяти по 16 МБ и 16 ГБ, если необходимо дополнительное увеличение производительности.
Примечания
Упоминание в данной статье продуктов и услуг IBM не означает, что IBM намерена поставлять их в каждую конкретную страну.
Информация предоставляется "как есть", без каких-либо гарантий.
Приведенные показатели производительности основываются на измерениях и прогнозах, базирующихся на стандартных тестах производительности IBM в контролируемой среде. Фактическая пропускная способность и производительность системы заказчика зависит от ряда условий, таких как уровень мультипрограммирования в потоке заданий пользователя, настройки подсистем ввода/вывода, конфигурации устройств хранения данных и рабочая нагрузка. Таким образом, нет никаких гарантий того, что пользователь в своей системе добьется таких же показателей, как изложенные в этой статье.
Ресурсы Научиться
Получить продукты и технологии
Обсудить
Об авторах  | |  | Сунил Камас (Sunil Kamath) является техническим директором отдела тестирования производительности оперативной обработки транзакций (online transaction processing (OLTP)) DB2 и разработки решений. Он работает над производительностью DB2 уже более шести лет и провел целый ряд рекордных тестов производительности TPC-C и SAP. В его обязанности и интересы также входит исследование и применение ключевых аппаратных средств, операционных систем и технологий компиляции, которые могут помочь в увеличении производительности DB2. Адрес его электронной почты - sunil.kamath@ca.ibm.com. |
 | |  | Прямыми обязанностями Пунита Шаха (Punit Shah) является внедрение новейших технологий для System p в связующее программное обеспечение IBM. Он работал в области разработки и производительности приложений и является автором и соавтором нескольких статей в этой области. Адрес его электронной почты - punit@us.ibm.com. |
Выскажите мнение об этой странице
|  |