Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
и насколько еще можно увеличивать буферные пулы?

На данный момент на сервере 32 гиг оперативки
под один из буфер пулов отдал immediate size 4000000
размер страницы 4k

4000000*4096/1024^3=примерно 15гиг под этот один пул, если не ошибся в рассчетах

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

В DB2 сложное управление памятью

Смотрю по htop, вроде как вообще почти вся оперативка свободная:
http://picpaste.com/pics/3NAsS9OH.1474281771.jpg

db2pd:
http://picpaste.com/pics/2NpgIyIE.1474281824.jpg

db2top:
http://picpaste.com/pics/8bXAZHHn.1474281875.jpg

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

К сообщению приложен файл. Размер - 119Kb
19 сен 16, 13:47    [19682668]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 996
dbtwoshnick,

Я бы сказал, что это не совсем правильная точка приложения силы.
Когда памяти более-менее хватает, и вы не имеете чёткого представления, зачем вам буфферпул именно такого размера, то чаще всего мы будем наблюдать совершенно замечательный hitratio (98-99%), но будет это за счёт крайне неэффективных запросов с очень большим соотношением ROWS_READ / ROWS_RETURNED.
Отсутствие того или иного индекса, плохо сформулированный предикат, ещё чего-то приводят к необоснованным table scan'ам. В каком-нибудь join'е всё это умножается на кардинальность второй таблицы, как результат получаем миллиарды прочитанных строк при требующемся десятке/другом тысяч.

Большие буфферпулы часто скрадывают/маскируют эту катастрофическую ситуацию, так что начните лучше с отлова таких запросов или _уменьшения_ буффрпулов с последующим разбором, как оно на hitratio влияет.
19 сен 16, 14:57    [19683068]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
CawaSPb,

У одной из таблиц этого буфер пула около 100 млн записей, в других таблицах тоже миллионы записей.

Разработкой приложения занимается крупная компания.

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

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

Во время работы этот буфер пул показывает хорошие результаты, но во время реорганизации его hitratio частенько около нуля, вот я и подумал заняться наращиванием этого буфер пула, увеличив его в 2.5 раза заметил небольшое увеличение hitrate от нескольких процентов до почти 100% во время реорганизации, замеры по времени еще не делал, стала ли реорганизация от этого быстрее.
19 сен 16, 18:05    [19684356]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
на форуме встречал сообщение примерно такого содержания:

автор
Снял задачу, добавил ОЗУ, увеличил instance_memory до 64Гб. Реорганизация прошла за 20 минут. Видимо, всё таки, какой-то параметр в db или dbm, который стоит в автомате.


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

Да еще не пойму, в скрипте от разработчиков зачем то:

1) runstats on table XXX ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL
2) reorg table XXX
3) reorg indexes all for table XXX
4) runstats on table XXX ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL

нельзя ли это сократить до:
1) reorg table XXX
2) runstats on table XXX ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL

?

Наверно, при текущем темпе роста объема базы через несколько лет придется ждать поставок СХД стоимостью как из чистого золота, чтобы обеспечить работу такой реорганизации?
19 сен 16, 18:12    [19684384]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
и все таки хотелось бы увидеть ответ и непосредственно по теме ветки, пусть даже он послужил бы не самой эффективной оптимизации с точки зрения имеющихся программно-аппаратных ресурсов, но зато эффективным с точки зрения затрат времени
19 сен 16, 18:36    [19684459]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4850
dbtwoshnick
и все таки хотелось бы увидеть ответ и непосредственно по теме ветки

Со стороны Linux - pmap на db2sysc.
Со стороны db2: db2pd -dbptnmem
Найдите в интернете статью в pdf по подстроке "db2 luw memory management", там более подробно.
19 сен 16, 21:17    [19684985]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4850
dbtwoshnick

нельзя ли это сократить до:
1) reorg table XXX
2) runstats on table XXX ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL
?
Можно и нужно.
Классический реорг перестраивает индексы в конце. Зачем собирать статистику перед реорг тоже непонятно.
19 сен 16, 21:21    [19685003]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
Мысль
Guest
Mark Barinstein
Классический реорг перестраивает индексы в конце. Зачем собирать статистику перед реорг тоже непонятно.


тем дороже оборудование нужно, предлагаю запускать все это в цикле, чтобы было еще дольше
20 сен 16, 04:26    [19685717]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 996
Мысль
Mark Barinstein
Классический реорг перестраивает индексы в конце. Зачем собирать статистику перед реорг тоже непонятно.


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

Не надо усложнять. Где денег спереть кто надо и так найдёт, без помощи горе-девелоперов.
Всё обычно проще - "пусть лошадь думает, у неё голова большая".

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

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

Ни одна разработка не сможет у себя полноценно смоделировать продуктивную нагрузку. Фидбэк от "эксплутационщиков" всегда очень важен.
Заявляйте неоправданно тяжёлые запросы (если таковые есть, а они, уверяю, есть) как дефекты, и будет всем счастье.

Это _ваша_ организация платит за железо и DB2'шные лицензии. Чего ж зря мощности раздувать.
20 сен 16, 11:10    [19686413]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
mitek
Member

Откуда:
Сообщений: 605
dbtwoshnick
как то бы посмотреть, что всего в целом со всеми буферпулами, кучами и т.п. DB2 занимает столько-то,


select SUM(MEMORY_POOL_USED)/1024 as TOT_MEMORY_USED_MB from table(MON_GET_MEMORY_POOL(null,null,-1)) as t with ur

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

бест-практики рассказывают нам, что если база на хосте одна и других приложений потребляющих память нет, то 5-10% под ОС, из оставшегося 75% под буферпулы для OLTP БД и 50% под OLAP БД.
20 сен 16, 12:56    [19687074]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
mitek,

но ведь это только оперативка для буферных пулов?

а как сосчитать всю полностью? POOL + SORTS + LOCKLIST + многое другое ..... ?
22 сен 16, 17:11    [19697665]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
mitek
Member

Откуда:
Сообщений: 605
dbtwoshnick
mitek,

но ведь это только оперативка для буферных пулов?

а как сосчитать всю полностью? POOL + SORTS + LOCKLIST + многое другое ..... ?


это олл-инклюзив
23 сен 16, 09:38    [19699074]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
mitek
dbtwoshnick
mitek,

но ведь это только оперативка для буферных пулов?

а как сосчитать всю полностью? POOL + SORTS + LOCKLIST + многое другое ..... ?


это олл-инклюзив


судя по:
http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0059464.html

и по результатам:
select * from table(MON_GET_MEMORY_POOL(null,null,-1)) as t with ur

действительно походит на то, тогда большое спасибо за совет!

а что за member?
автор
An input argument of type INTEGER that specifies from which member the data is returned. Specify -1 for the current database member, or -2 for all active members. If the NULL value is specified, -1 is set implicitly.


это instance для однонодного сервера DB2?
23 сен 16, 19:00    [19702168]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
mitek
dbtwoshnick
mitek,

но ведь это только оперативка для буферных пулов?

а как сосчитать всю полностью? POOL + SORTS + LOCKLIST + многое другое ..... ?


это олл-инклюзив


TOT_MEMORY_USED_MB
18491968

Вроде бы итого не совпадают, или в ваш запрос не включены applications?

К сообщению приложен файл. Размер - 117Kb
7 окт 16, 13:18    [19755118]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4850
dbtwoshnick,

Вы в high water mark смотрите (Maximum Size), а не в текущее использование (Current Size).
select 
  sum(memory_pool_used)/1024 memory_pool_used_mb 
, sum(memory_pool_used_hwm)/1024 memory_pool_used_hwm_mb 
from table(MON_GET_MEMORY_POOL(null,null,-1))
7 окт 16, 17:17    [19756750]     Ответить | Цитировать Сообщить модератору
 Re: Как определить сколько оперативной памяти занимает DB2?  [new]
dbtwoshnick
Member

Откуда:
Сообщений: 160
Mark Barinstein,

этот скриншот с watermarks было уже после уменьшения PCKCACHESZ после переактивации базы

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

пришлось увеличить PCKCACHESZ в 100 раз до значения 1000000 (было 10000)

через полчаса запрос TOT_MEMORY_USED_MB выдал около 22GB по сравнению с 18GB ранее

физически 32GB оперативки, получается примерно = как раз значению TOT_MEMORY_USED_MB + 9GB applications?

когда значение TOT_MEMORY_USED_MB подросло еще немного, то

пользователи сообщили, что многие режимы работы приложения перестали работать

а у меня при запуске скрипта создания снэпшотов было сообщение о нехватке shared memory
7 окт 16, 17:52    [19756926]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить