RE: AIX + Oracle = Memory + Swap

Главная Форумы POWER Systems AIX/Hardware AIX + Oracle = Memory + Swap RE: AIX + Oracle = Memory + Swap

#2320
andrewk
Участник

1. файловые системы, смонтированные с опцией cio, не должны использоваться ни для чего, кроме как для данных. если вы занимались еще и копированием на них и с них файлов, то естественно никаких преимуществ от этого не заметите. наши ораклисты сначала очень быстро ощутили преимущества использования cio на фс, а потом начали жаловаться на очень медленно работающий rman. Для разных задач создавайте разные фс и монтируйте их с разными опциями!
2. операционная система выгружает в paging те области памяти, которые давно никем не используются. это нормальное поведение любой современной ОС. если любимая ос ваших ораклистов этого не делает, значит ей место на свалке истории. ничего страшного от того, что занято много места в свапе нет. главное – с какой периодичностью система этот самый свап насилует. это можно увидеть, запустив vmstat и посмотрев на поля si, so.
3. svmon – наше все для анализа любых непонятных явлений с памятью, но пользоваться им надо тоже уметь, для чего настоятельно рекомендуется к прочтению официальная документация на инфоцентре по вопросам performance tuning’а. без прочтения документации можно сделать абсолютно фееричные выводы из svmon’а.
4. что касается, как принудительно сделать, чтобы оракл всегда жил в памяти и не уходил в своп. существует рекомендуемая и ораклом, и ibm техника (но некоторые сотрудники ibm в моем последнем pmr сделали большие глаза на этот счет и сказали, что ничего подобного они рекомендует).
Note #1. в AIX возможно настроить все что угодно, но работа по настройке должна вестись не толька вами, но и вашими ораклистами.
Note #2. в Oracle ОЧЕНЬ МНОГО БАГОВ. В том числе регулярно мешающих его нормальному функционированию.
1. Договариваемся с ораклистами о размере SGA (System Global Area). SGA размещается в Shared Memory и обычно является самым большим куском памяти, используемым Ораклом и, насколько я могу судить, именно его AIX регулярно пытается убрать в свап за неиспользуемостью. Для того, чтобы договориться о размере SGA необходимо точно знать, сколько памяти установлено в системе, сколько памяти потребляет система без запущенного оракла, сколько установлен maxclient. Из общего объема памяти вычитаете используемый объем памяти без оракла, вычитаете maxclient%, вычитаете объем памяти, занимаемый ораклом без запущенной БД. Получаете некоторую цифру и уменьшаете ее еще процентов на 10, после чего идете торговаться к вашим ораклистам. При этом помните, что ваша задача – ни в коем случае не продать им больше, чем вы можете. Ораклисты, по моему личному опыту, почему-то уверены, что если сервер отдан исключительно под оракл, то все 100% памяти могут быть использованы под SGA. К каким печальным последствиям ведет подобная уверенность, говорить не надо. Желательно, чтобы общий объем SGA не превышал 70-75% от памяти.
2. Дальше – дело техники. Договорившись с коллегами о размере SGA, делите его на 16 Мбайт и округляете в меньшую сторону.
3. vmo -p -o lgpg_size=16777216 -o lgpg_regions=
4. bosboot -a
5. приготовьтесь к тому, что если вы неправильно задали параметры, то система не загрузится и вам придется перегружаться в maintenance mode.
6. shutdown -Fr
7. после перезагрузки смотрим, сколько памяти занято. Large pages НИКОГДА не уходят в свап. это означает, что сразу же после перезагрузки у вас будет около 80-90% памяти занято. если в этот момент вы стартуете оракл, то с высокой долей вероятности он ВЕСЬ уйдет в свап и не сможет работать. если вы ошиблись в количестве lgpg_regions, то с высокой долей вероятности через некоторое время вы будете наблюдать регулярные дампы системы и не понимать, почему они происходят.
8. дальше необходимо настраивать оракл. я помню лишь два момента про оракл – а) надо установить lock_sga в true и б) в некоторых версиях оракла, в частности в 10.2.0.3 (и похоже мы сейчас на 10.2.0.4 натолкнулись на то же) есть баг, которые не позволяет использовать large pages и лочить SGA в памяти. официальный workaround – установить переменную окружения для оракла ORACLE_SGA_PGSZ=16m. И естественно не забудьте изменить размер SGA и сделать его равным тому количеству large pages, которое вы установили в системе.
9. если оракл стартовал без проблем и все настроено правильно, то наступит полное счастье без свапа. но за системой нужно будет следить более внимательно, поскольку залочив память для оракла, вы отобрали память у системы. в случае если системе не будет хватать памяти (реальной) под какие-либо сетевые буферы, буферы файловой системы и прочие внутренние таблицы процессов и тредов, система сдохнет, выдав перед этим дамп. поэтому не забудьте, настроить устройство для дампа, прежде чем тьюнить систему для оракла 🙂