Страница 1 из 1

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 02 мар 2013, 12:09
kdv
сколько у вас пользователей одновременно работают с базой?

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 19 мар 2013, 09:27
mkl_sis
Спасибо за помощь.