powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Нагрузка на CPU сервера Db2
27 сообщений из 27, показаны все 2 страниц
Нагрузка на CPU сервера Db2
    #38559616
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть сервер db2 на платформе Windows 2008 R2 Enterprise.

На нем крутится база специализированного веб-приложения сторонних разработчиков.
Пользователи жалуются на низкую скорость работы этого приложения.

В процессе выяснения причин снижения производительности обратили внимание на странный факт: картинка загрузки процессоров в Task Manager в Windows выглядит так, как будто бы из 16 ниток нагружены только 8 (скриншот приложен).
Физически в сервере установлены 2 Intel Xeon E5640, 4 ядра/8 ниток каждый.

Конечно, это всего лишь загрузка процессора в интерпретации Windows, картинка. Но на других серверах такого нет.
Это нормально? Как понять, задействует ли db/2 все ресурсы?

Вывод команды db2pd -osinfo:

Operating System Information:

OSName: WIN32_NT
NodeName: SW07500008002KS
Version: 6.1
Release: Service Pack 1
Machine: AMD64 Family 6, model 44, stepping 2

CPU Information:
TotalCPU OnlineCPU ConfigCPU Speed(MHz) HMTDegree Cores/Socket
16 16 16 2666 2 1

Physical Memory and Swap (Megabytes):
TotalMem FreeMem AvailMem TotalSwap FreeSwap
49144 28582 28582 49142 49142

Virtual Memory (Megabytes):
Total Reserved Available Free
98286 n/a n/a 77715

Вывод команды db2licm -l show detail:

Имя продукта: "DB2 Workgroup Server Edition"
Тип лицензии: "Опция по числу гнезд"
Дата истечения срока: "Постоянно"
Идентификатор продукта: "db2wse"
Информация о версии: "9.7"
Максимальный объем памяти (Гбайт): "64"
Правила ограничений: "Мягкая остановка"

Имя продукта: "Сервер DB2 Connect"
Дата истечения срока: "Срок истек"
Идентификатор продукта: "db2consv"
Информация о версии: "9.7"
Правила для числа одновременных пользователей Connect: "Отключено"
Правила ограничений: "Мягкая остановка"
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559721
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975,

"В лоб" по-быстрому посмотреть - во время нагрузки и жалоб пользователей поизучать вывод:
Код: sql
1.
call monreport.dbsummary(30);


+
Посмотреть помимо загрузки проца нагрузку на диски (в частности размер дисковых очередей) в ресурс-мониторе.


Более детально:
1. В начале некоторого промежутка тестирования:
Код: sql
1.
flush package cache dynamic;


2. В конце:
Код: sql
1.
2.
3.
4.
5.
6.
export 
  to с:\my_cool_data_dir\pkg_cache.ixf of IXF
  lobs to с:\my_cool_data_dir\LOBS
  lobfile pkg_cache.lob
  MODIFIED BY LOBSINFILE 
 select * from TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL, NULL, -2));


или
Код: sql
1.
2.
3.
create view db2mon.v_pkg_cache as select * from TABLE(MON_GET_PKG_CACHE_STMT (NULL, NULL, NULL, -2)) as T ;
create table db2mon.pkg_cache_snapshot like db2mon.v_pkg_cache;
insert into db2mon.pkg_cache_snapshot select * from db2mon.v_pkg_cache;


Дальше поизучать результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select sum(total_act_time)/1000 total_act_time
      ,sum(total_cpu_time)/1000000 total_cpu_time
      ,sum(total_act_wait_time)/1000 act_wait_time
      ,sum(lock_wait_time)/1000 lock_wait_time
      ,count(*) total_stmts
from  db2mon.pkg_cache_snapshot;

select STMT_TEXT, t.* from  db2mon.pkg_cache_snapshot t order by total_act_time desc;

select STMT_TEXT, t.* from  db2mon.pkg_cache_snapshot t order by total_cpu_time desc;

select STMT_TEXT, t.* from  db2mon.pkg_cache_snapshot t order by rows_read desc;
...


Можно ещё посмотреть группируя по части STMT_TEXT, если непараметризованных запросов много и они съедают существенное время.
Если не жалко своими SQL запросами поделиться (возможно с некоторыми данными), то можно просто приложить полученные pkg_cache.ixf и pkg_cache.lob

Во многих случаях анализа этих данных будет достаточно. Только что пример перед глазами был, когда один кривой запрос (предикат по "UPPER(<поле>) = значение") поднимал у БД нагрузку на CPU в 10-20 раз (отличился IBM BPM).
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559820
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975В процессе выяснения причин снижения производительности обратили внимание на странный факт: картинка загрузки процессоров в Task Manager в Windows выглядит так, как будто бы из 16 ниток нагружены только 8 (скриншот приложен).
Физически в сервере установлены 2 Intel Xeon E5640, 4 ядра/8 ниток каждый.

Конечно, это всего лишь загрузка процессора в интерпретации Windows, картинка. Но на других серверах такого нет.
Это нормально? Как понять, задействует ли db/2 все ресурсы?

в WSE нет intra_parallel поэтому каждый запрос выполняется только одним core/thread
чтобы задействовать все CPU придется увеличивать число юзеров/сессий :)
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559845
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mitek, в конфиге вообще есть параллелизм и он включен.

Макс. уровень параллелизма запроса (MAX_QUERYDEGREE) = ANY
Разрешить внутрираздельный параллелизм (INTRA_PARALLEL) = YES
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559937
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975,

PS Да, при "per socket" лицензировании у WSE ограничение - 4 ядра. Так что один проц можно выкинуть (или переходить на лицензирование по PVU).
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559975
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975mitek, в конфиге вообще есть параллелизм и он включен.

Макс. уровень параллелизма запроса (MAX_QUERYDEGREE) = ANY
Разрешить внутрираздельный параллелизм (INTRA_PARALLEL) = YES

а реально работает ?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559983
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CawaSPbStas975,

PS Да, при "per socket" лицензировании у WSE ограничение - 4 ядра. Так что один проц можно выкинуть (или переходить на лицензирование по PVU).

вродеж было только 16-core всего лимит на WSE
есть ссылка где почитать ?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559988
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mitekStas975mitek, в конфиге вообще есть параллелизм и он включен.

Макс. уровень параллелизма запроса (MAX_QUERYDEGREE) = ANY
Разрешить внутрираздельный параллелизм (INTRA_PARALLEL) = YES

а реально работает ?

А как проверить? :)
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38559998
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPbStas975,

PS Да, при "per socket" лицензировании у WSE ограничение - 4 ядра. Так что один проц можно выкинуть (или переходить на лицензирование по PVU).

Вот очень похоже, что дело в этом.
Только как бы убедиться?
За лицензиями дело не станет, они есть.

IBM пишет про ограничение в 4 "гнезда", имея в виду под "гнездом" сокет с процессором на любое (?) число ядер:
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560021
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975,

Да, конечно, наврал.
Сокет - по физическим процессорам. Т.е. с ограничением на 4 сокета этот тип лицензирования подойдёт.
А вот на сколько сокетов у вас лицензия - вопрос. Видимо на один.
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560032
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mitek]CawaSPbStas975,
вродеж было только 16-core всего лимит на WSE
есть ссылка где почитать ?
вот нашел Limited Use Socket Sub-capacity Licensing Guide
но про лимит 4 cores per socket вроде бы ничего нет
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560036
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPbStas975,

Да, конечно, наврал.
Сокет - по физическим процессорам. Т.е. с ограничением на 4 сокета этот тип лицензирования подойдёт.
А вот на сколько сокетов у вас лицензия - вопрос. Видимо на один.

По документам - на два.

А фактически сколько установлено, как посмотреть?

db2licm -g lic.txt выдает неприятное:

Отчет о соответствии лицензиям

DB2 Workgroup Server Edition Нарушение
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560054
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stas975А как проверить? :)

как вариант :

set current degree = '4';

select count(*) from table;

и смотреть утилизацию тредов/ядер

во время выполнения можно глянуть есть ли :

db2pd -db <DBNAME> -edus | grep db2agntp

в количестве соответствующем указанному degree
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560235
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitekвот нашел Limited Use Socket Sub-capacity Licensing Guide
но про лимит 4 cores per socket вроде бы ничего нет

Непонятно, как этот документ привязан к версии. От версии к версии лимиты менялись.
Вот по 9.7:
http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.licensing.doc/doc/c0056286.html

Информацию по привязке к ядрам/процам можно попробовать поискать в db2diag.log где-нибудь в районе выполнения db2start.
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560586
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot CawaSPb]mitek
Информацию по привязке к ядрам/процам можно попробовать поискать в db2diag.log где-нибудь в районе выполнения db2start.

В db2diag.log вот что:

DATA #1 : Build Level, 152 bytes
Instance "DB2" uses "64" bits and DB2 code release "SQL09077"
with level identifier "08080107".
Informational tokens are "DB2 v9.7.700.552", "s121002", "IP23369", Fix Pack "7".
DATA #2 : System Info, 1568 bytes
System: WIN32_NT SW07500008002KS Service Pack 1 6.1 AMD64 Family 6, model 44, stepping 2
CPU: total:16 online:16 Cores per socket:1 Threading degree per core:2

Как вообще определять, сколько лицензий корректно загружено и хватает ли их для данного конкретного железа?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560792
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stas975,

Добрый день.

DB2 WSE:
В коде зашито, что оно может использовать только первые 16 ядер в системе.
Вы не можете использовать INTRA_PARALLEL=YES из-за лицензионных ограничений. Именно поэтому у вас светится нарушение лицензии. Но включить вы это можете, и оно даже может работать, если оптимизатор решит, что это нужно. Другой вопрос - действительно ли это нужно вашему веб-приложению, все-таки этот прараметр устанавливают обычно для аналитической нагрузки.
Нет понятия "количество загруженных сокетных лицензий". В сокетной лицензии нет количества пролицензированных сокетов. Вы сами должны следить за тем, что в системе не используется больше сокетов, чем то количество, за которое вы заплатили.

Посмотреть, используется ли для запроса из кэша параллелизм можно так:
Код: sql
1.
2.
3.
4.
5.
SELECT SUBSTR(C.VALUE, 1, 2) DEGREE, T.STMT_TEXT
FROM 
  TABLE(MON_GET_PKG_CACHE_STMT (NULL, NULL, NULL, -1)) AS T
, TABLE(COMPILATION_ENV(T.COMP_ENV_DESC)) C
WHERE C.NAME='DEGREE'


DB2 не привязывает нить к конкретному ядру или нити ЦПУ, это задача планировщика ОС - распределить выполняться нить туда, куда ОС посчитает наиболее оптимальным. В данном случае я не вижу никакого криминала - у вас нет нитей, загруженных на 100%.
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38560857
Stas975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Mark Barinstein!

Mark BarinsteinStas975,
В сокетной лицензии нет количества пролицензированных сокетов.


Это означает, что вне зависимости от количества приобретенных лицензий lic-файл всегда будет один и внутри него всегда будет написано LicenseCount=1?

Относительно запроса: мы его выполнили и получили по всей выборке в колонке DEGREE значение 1. Что, видимо, прозрачно намекает на неиспользование параллелизма.
Так может его и в конфигурации отключить тогда?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38577247
vitabios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stas975,

А в сторону вебсферы не смотрели? может быть проблема вовсе не в DB2?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582512
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinDB2 WSE:
В коде зашито, что оно может использовать только первые 16 ядер в системе.
Mark Barinstein, правильно ли я понял? У WSE 9.7 есть внутреннее программное ограничение на использование максимум 16 ядер в системе? Если реальное количество ядер больше, то DB2 WSE будет использовать только 16? И ограничение в 16 ядер никак не зависит от лицензии?

Mark BarinsteinНет понятия "количество загруженных сокетных лицензий". В сокетной лицензии нет количества пролицензированных сокетов. Вы сами должны следить за тем, что в системе не используется больше сокетов, чем то количество, за которое вы заплатили.
А как быть с ситуацией, когда DB2 WSE с сокетной лицензией устанавливается (извините, может неправильно выражусь) на виртуальном сервере VMWare на базе гипервизора, который имеет сокетов больше, чем предусмотрено сокетной лицензией DB2? Это будет нарушением лицензии?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582570
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen PopovА как быть с ситуацией, когда DB2 WSE с сокетной лицензией устанавливается (извините, может неправильно выражусь) на виртуальном сервере VMWare на базе гипервизора, который имеет сокетов больше, чем предусмотрено сокетной лицензией DB2? Это будет нарушением лицензии?
Посмотрите ссылку, что я приводил выше. Там есть подобные случаи.
Как пример : 4-х сокетный сервер на xeon e7 10 core. Cоздана VM с 2-мя "сокетами" по 8-м "ядер". Cогласно формуле получаем (2*8)/10=1.6 "сокета", т.е 2. Соответственно 2 LUS-лицензии.
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582808
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitek, спасибо. Посмотрел Вашу ссылку, и не нашел, какой пример можно применить вот для такого случая. Есть физический сервер с 2-мя процами (сокетами) по 6 ядер. На сервере установлена одна ОС (не виртуальная). Но система видит ядер в два раза больше (24), чем их физическое количество, потому что в БИОСе включен так называемый гипертрейдинг. Какое количество LUS-лицензий потребуется?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582828
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen Popov Есть физический сервер с 2-мя процами (сокетами) по 6 ядер. На сервере установлена одна ОС (не виртуальная). Но система видит ядер в два раза больше (24), чем их физическое количество, потому что в БИОСе включен так называемый гипертрейдинг. Какое количество LUS-лицензий потребуется?
две
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582946
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stas975Mark BarinsteinStas975,
В сокетной лицензии нет количества пролицензированных сокетов.

Это означает, что вне зависимости от количества приобретенных лицензий lic-файл всегда будет один и внутри него всегда будет написано LicenseCount=1?Я никогда не видел lic файлов, в которых указывается LicenseCount отличное от 1.
Если кто-то видел, сообщите.
Stas975Относительно запроса: мы его выполнили и получили по всей выборке в колонке DEGREE значение 1. Что, видимо, прозрачно намекает на неиспользование параллелизма.
Так может его и в конфигурации отключить тогда?Вы должны его отключить, если не хотите нарушать лицензионное соглашение.
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582956
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitekSemen Popov Есть физический сервер с 2-мя процами (сокетами) по 6 ядер. На сервере установлена одна ОС (не виртуальная). Но система видит ядер в два раза больше (24), чем их физическое количество, потому что в БИОСе включен так называемый гипертрейдинг. Какое количество LUS-лицензий потребуется?
двеПо какой формуле считали?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582960
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen Popov,
ни по какой. на "физике" два сокета - две лицензии
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38582967
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinStas975Относительно запроса: мы его выполнили и получили по всей выборке в колонке DEGREE значение 1. Что, видимо, прозрачно намекает на неиспользование параллелизма.
Так может его и в конфигурации отключить тогда?Вы должны его отключить, если не хотите нарушать лицензионное соглашение.Mark, у нас есть два одинаковых сервера. На них установлены одинаковые ОС. Также на обоих установлены копии DB2 WSE 9.7.6. В dbm cfg обоих серверов включен внутрираздельный параллелизм. И там и там выполнили запрос и получили по всей выборке в колонке DEGREE значение 1.
Почему тогда на одном сервере db2licm -g пишет "В соответствии", а на втором - "Нарушение"?
...
Рейтинг: 0 / 0
Нагрузка на CPU сервера Db2
    #38583021
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen PopovMark Barinsteinпропущено...
Вы должны его отключить, если не хотите нарушать лицензионное соглашение.Mark, у нас есть два одинаковых сервера. На них установлены одинаковые ОС. Также на обоих установлены копии DB2 WSE 9.7.6. В dbm cfg обоих серверов включен внутрираздельный параллелизм. И там и там выполнили запрос и получили по всей выборке в колонке DEGREE значение 1.
Почему тогда на одном сервере db2licm -g пишет "В соответствии", а на втором - "Нарушение"?Я не знаю логику работы лицензионного менеджера. Может быть, он ставит флажок только тогда, когда параллелизм начинает реально использоваться. То, что у вас DEGREE=1 для всех запросов в кэше, не означает, что параллелизм когда-то раньше использовался или не использовался. Может быть, он использовался до последней деактивации базы. А может и после, но запрос этот из кэша ушел.

Лицензионное соглашение.
IBM DB2 Workgroup Server Edition Fix Pack 9.7.0.6 :
...
3.4 Component Usage Restriction

You are not authorized to use any of the following with the Program: Database Partitioning Feature, Performance Optimization Feature, Storage Optimization Feature, Advanced Access Control Feature, Homogeneous Replication Feature for Enterprise Server Edition, Table Partitioning, Governor, Materialized Query Tables, Multi-Dimensional Clustering, Query Parallelism and Connection Concentrator.
...
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Нагрузка на CPU сервера Db2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]