Использование Firebird 1.5 на многопроцессорных машинах

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
mkl_sis
Сообщения: 21
Зарегистрирован: 18 окт 2007, 13:47

Использование Firebird 1.5 на многопроцессорных машинах

Сообщение mkl_sis » 26 фев 2013, 11:17

Имеем программу, работающую на Firebird 1.5. На сервера обычно ставлю CentOS и версию Firebird Classic. Во время работы программы некоторые задачи занимают много процессорного времени. С появлением многопроцессорных машин
эти большие задачи, о которых я написал выше, теперь могут занять только 50% процессорного времени на 2-х ядерных машинах и 25% на 4-х ядерных. Соответственно время выполнения задачи увеличивается. Покупаю для работы сервера HP Proliant. Сейчас уже нет в продаже 2-х ядерных машин, только 4-х ядерные. Есть ли какое решение данной проблемы?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение hvlad » 26 фев 2013, 14:13

mkl_sis писал(а):Есть ли какое решение данной проблемы?
1. Разбираться с приложением
2. Если это авто-свип, то или отключить его и выполнять вручную, или см. п1

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение kdv » 27 фев 2013, 02:15

теперь могут занять только 50% процессорного времени на 2-х ядерных машинах и 25% на 4-х ядерных.
а у вас точно классик? 1 процесс классика может занять только 1 ядро. Отсюда и 50% и 25%. Было бы 2 или 4 процесса, могли бы занять 100%.
Суперсервер с одной базой будет вообще для всех запросов выполняться только на 1 ядре.

1 запрос по ядрам никак не распараллеливается, т.е. он будет выполняться на 1 ядре.

Так что да, нужно оптимизировать код приложения, запросы, и т.д., чтобы оно "в одну дуду" не жрало постоянно ядро на 100%.

mkl_sis
Сообщения: 21
Зарегистрирован: 18 окт 2007, 13:47

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение mkl_sis » 01 мар 2013, 10:58

hvlad писал(а):
mkl_sis писал(а):Есть ли какое решение данной проблемы?
1. Разбираться с приложением
2. Если это авто-свип, то или отключить его и выполнять вручную, или см. п1
Приложением является бухгалтерская программа Инфо-предприятие и я думаю что специально для нас разработчики ничего в ней менять не будут. Может тогда покупать не сервера а искать вариант обычной станции с двумя ядрами? Но наверно и их уже скоро не будет 2-х ядерных?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение kdv » 02 мар 2013, 12:09

сколько у вас пользователей одновременно работают с базой?

mkl_sis
Сообщения: 21
Зарегистрирован: 18 окт 2007, 13:47

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение mkl_sis » 04 мар 2013, 11:17

kdv писал(а):сколько у вас пользователей одновременно работают с базой?
Около тридцати.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение kdv » 04 мар 2013, 16:58

и вы хотите сказать, что у вас на КЛАССИКе никогда загрузка процессора не бывает выше 50% на двухъядерном и 25% на 4х-ядерном процессоре?
Тогда я вас огорчу - у вас не классик, а суперсервер.

mkl_sis
Сообщения: 21
Зарегистрирован: 18 окт 2007, 13:47

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение mkl_sis » 06 мар 2013, 15:20

kdv писал(а):и вы хотите сказать, что у вас на КЛАССИКе никогда загрузка процессора не бывает выше 50% на двухъядерном и 25% на 4х-ядерном процессоре?
Тогда я вас огорчу - у вас не классик, а суперсервер.
Загрузка процессора бывает больше 50%. Дело в том, что есть операции, которые занимают особенно много процессорного времени. Например процедура расчета учетных цен в бух. программе обычно на 2-х ядерном процессоре занимает примерно 50% процессорного времени т.е. полностью одно ядро и длится 5 минут. Остальные пользователи при этом работают на другом ядре. На 4-х ядерном расчет учетных цен может занять только 25% и длится в два раза дольше - 10 минут. Получается приобрел более новый сервер, а программа работает медленнее.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение kdv » 06 мар 2013, 21:52

На 4-х ядерном расчет учетных цен может занять только 25% и длится в два раза дольше - 10 минут.
при таких слишком примитивных вычислениях получается, что вы купили 4-ядерный процессор, который в 2 раза медленнее 2ядерного. Такое может быть, например, если 2ядерный процессор современный, а 4-ядерный - древний (времен 1-х 4ядерных).

В реальности, скорее всего, вы не видите настоящий источник проблем с производительностью. СУБД не математический инструмент. Т.е. я допускаю, что можно написать запрос, который будет грузить проц, но все же, в основном запросы обрабатывают данные, находящиеся на диске, поэтому на 100% одно ядро один процесс обычно если и загружает, то на весьма непродолжительное время.

Вам нужно сравнивать производительность дисков и количество памяти на этих серверах, а не загрузку ядер. Если вы "обычно ставите CentOS", значит вы должны в нем прекрасно разбираться. И, например, быть в курсе, что одна только опция barrier может ухудшить (или улучшить) производительность раза в 3. И т.д.

mkl_sis
Сообщения: 21
Зарегистрирован: 18 окт 2007, 13:47

Re: Использование Firebird 1.5 на многопроцессорных машинах

Сообщение mkl_sis » 19 мар 2013, 09:27

Спасибо за помощь.

Ответить