Vmware Esxi - Old 32bit software performance issue on multi core

Solution 1:

Leave the guest at one CPU. And document the reason in some notes about this guest in inventory.

Focus more on meeting application performance metrics, and less on misleading basic metrics like CPU utilization. Are interactive applications responsive? Do batch queries complete in an acceptable amount of time? If so, don't worry about CPU.

Edit: "Lock up" levels of poor performance was not in your original question, that is important context. Fixing that problem might be worth some extra effort:

  • Schedule maintenance times where the database is shut down, to apply updates and other tasks.
  • Increase CPUs, and apply the application level CPUAffinity configuration that other comments mentioned, to lock it to one.

Solution 2:

If you fix the process affinity to a single core the other core will stay free for other processes. Depending on the actual scheduling problem, it might be necessary to fix the Firebird server to the same or the other core as well.

However, since ESXi virtualizes CPU cores as well it'll keep moving the vCPU cores across your physical cores. You might need to fix the VMs affinity to specific cores as well.

You should be aware that this kind of tuning is caused by badly coded or severely outdated software. You should seriously look into updating the code.