Vmware Esxi -Старая проблема производительности 32-битного программного обеспечения на многоядерном процессоре

. уже 2 дня схожу с ума и прошу помощи.

У меня есть программа, разработанная в delphi (начало 2000-х примерно), которая обращается к базе данных firebird v3, в настоящее время установленной на том же компьютере (windows server 2016 x64 -db и программа x86).

Машина представляет собой виртуальную машину, настроенную на vmware esxi, я пришел к выводу:, если я настрою виртуальную машину только с 1 виртуальным процессором, программа будет работать очень хорошо, если я также настрою ее с 2 виртуальными процессорами (1 сокет и 2 ядра)и более, производительность снижается вдвое.

Проблема в том, что, оставив только один виртуальный ЦП, ЦП постоянно загружен на 100%, даже только для заданий сервера Windows (, например, для поиска обновлений и прочего).

Есть ли у вас какие-либо советы?

PS:Я не могу переключиться на firebird x64, потому что многие библиотеки x86.

PPS:ОС на виртуальной машине — Windows Server 2016 Standard ed

3
задан 21 November 2021 в 13:18
3 ответа

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

Однако, поскольку ESXi также виртуализирует ядра ЦП, он будет продолжать перемещать ядра виртуального ЦП между вашими физическими ядрами. Возможно, вам также потребуется исправить привязку виртуальных машин к определенным ядрам.

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

2
ответ дан 21 November 2021 в 16:18

Оставить гостя на одном ЦП. И задокументируйте причину в некоторых заметках об этом госте в инвентаре.

Уделяйте больше внимания показателям производительности приложений, а не вводящим в заблуждение базовым показателям, таким как загрузка ЦП. Отвечают ли интерактивные приложения? Выполняются ли пакетные запросы за приемлемое время? Если это так, не беспокойтесь о процессоре.

Редактировать:«Заблокировать» уровни низкой производительности не было в вашем исходном вопросе, это важный контекст. Решение этой проблемы может стоить некоторых дополнительных усилий.:

  • Запланируйте время обслуживания, когда база данных выключается, для применения обновлений и других задач.
  • Увеличьте количество ЦП и примените конфигурацию CPUAffinity на уровне приложения, упомянутую в других комментариях, чтобы зафиксировать ее на одном.
5
ответ дан 21 November 2021 в 18:22

Это известная проблема FireBird.

Я управлял некоторыми клиентами, использующими FireBird для различного программного обеспечения, и статистику многопоточности сложно настроить с помощью.conf, но сначала вы должны установить Firebird с настройками, необходимыми для использования многопроцессорного сервера, классического сервера.

enter image description here

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

Thread-безопасная клиентская библиотека

Thread-safe Client Library

Dmitry Yemanov
Vladyslav Khorsun
Alex Peshkov

Tracker reference CORE-707.

The client libraries, including the embedded one, can now be used in multi-threaded applications without any application-level

синхронизация.

0
ответ дан 22 November 2021 в 17:58

Теги

Похожие вопросы