Puncte:3

Vmware Esxi - Problemă de performanță software veche pe 32 de biți pe mai multe nuclee

drapel cn

Am luat-o razna de 2 zile si cer ajutor.

Am un program dezvoltat în delphi (începutul anilor 2000 cam) care accesează o bază de date firebird v3, instalată în prezent pe aceeași mașină (server windows 2016 x64 - db și programul sunt x86).

Mașina este un VM configurat pe vmware esxi, ajung la subiect: dacă configurez VM-ul cu doar 1 vCPU programul rulează foarte bine, dacă îl configurez și cu 2 vCPU-uri (1 socket și 2 nuclee) sau mai multe, performanța este redusă la jumătate.

Problema este că, lăsând doar un vCPU, procesorul este perpetuu la 100% chiar și doar pentru joburi pe server Windows (de exemplu, căutați actualizări și alte chestii).

Ai vreun sfat?

PS: Nu pot trece la firebird x64 pentru că multe biblioteci sunt x86.

PPS: Sistemul de operare de pe VM este Windows Server 2016 Standard ed

joeqwerty avatar
drapel cv
**Aveți vreun sfat?** - Dacă programul rulează foarte bine cu 1 vCPU, lăsați-l așa și ignorați utilizarea CPU. În caz contrar, reconstruiți aplicația.
vidarlo avatar
drapel ar
Aflați unde este blocajul care duce la jumătate de performanță. Nu există o soluție simplă pentru această problemă.
drapel cn
Încercați să setați afinitatea procesorului la CPU 0 în managerul de activități sau folosind start /affinity
shodanshok avatar
drapel ca
Ați încercat să configurați oaspetele dvs. cu 2 prize fiecare având un singur miez?
drapel cn
Când utilizați 1 vCPU, fără a rula aplicația dvs., obțineți o utilizare 100% a procesorului doar din serviciile de fundal Windows? Poate că acolo ceva nu este în regulă. Nu sunt sigur care sunt procesoarele tale fizice, dar asta nu mi se pare în regulă.
drapel cn
Ok, acesta este un software vechi, dar pe ce rulează sistemul de operare? Cel din VM?
MenInTheMiddle avatar
drapel cn
Sistemul de operare este Windows Server 2016 Standard edition
Puncte:5
drapel cn

Lăsați oaspetele la un singur CPU. Și documentați motivul în câteva note despre acest oaspete în inventar.

Concentrați-vă mai mult pe îndeplinirea valorilor de performanță a aplicațiilor și mai puțin pe valorile de bază înșelătoare, cum ar fi utilizarea CPU. Sunt aplicațiile interactive receptive? Se completează interogările lot într-un interval de timp acceptabil? Dacă da, nu vă faceți griji pentru procesor.

Editare: nivelurile de „blocare” ale performanței slabe nu erau în întrebarea dvs. inițială, acesta este contextul important. Remedierea acestei probleme ar putea merita un efort suplimentar:

  • Programați orele de întreținere în care baza de date este închisă, pentru a aplica actualizări și alte sarcini.
  • Măriți CPU-urile și aplicați configurația CPUAffinity la nivel de aplicație, menționată de alte comentarii, pentru a o bloca într-una.
MenInTheMiddle avatar
drapel cn
L-am lăsat pe oaspete la 1 vCPU, totul este în regulă până când Windows Server a decis să instaleze actualizări (Process Windows Modules Installer viteză până la 100% CPU provocând blocarea completă a procesului Firebird)
Puncte:2
drapel ru

Dacă fixați afinitatea procesului la un singur nucleu, celălalt nucleu va rămâne liber pentru alte procese. În funcție de problema reală de programare, ar putea fi necesar să reparați serverul Firebird la același nucleu sau la celălalt nucleu.

Cu toate acestea, deoarece ESXi virtualizează și nucleele CPU, va continua să miște nucleele vCPU în nucleele fizice. S-ar putea să fie nevoie să remediați afinitatea VM-urilor cu anumite nuclee, de asemenea.

Ar trebui să fiți conștienți de faptul că acest tip de reglare este cauzat de software-ul prost codificat sau extrem de învechit. Ar trebui să vă uitați serios la actualizarea codului.

drapel ar
jpa
[Întrebările frecvente Firebird](https://www.firebirdfaq.org/faq52/) sugerează și setarea afinității CPU, deși prin propriul fișier de configurare.
Zac67 avatar
drapel ru
Aceste cifre sunt, totuși, din cauza virtualizării CPU, VM-ul probabil necesită repararea anumitor nuclee.
MenInTheMiddle avatar
drapel cn
Am încercat să setez masca de afinitate CPU la primul CPU (și am încercat să setez masca de afinitate la core #0 în specificațiile vm, de asemenea) fără rezultate demne de remarcat. Ultima versiune de firebird pare să aibă o problemă cu parametrul masca de afinitate CPU din fișierul de configurare raportat la [Lăsați să folosiți int pe 64 de biți pentru masca de afinitate CPU](https://github.com/FirebirdSQL/firebird/commit/188c1c6176c63cff6eedd85806bdf16352), confirmați că bug-ul poate fi cauza lipsei de rezultate setarea masca de afinitate CPU în firebird.conf?
Zac67 avatar
drapel ru
@MenInTheMiddle Dacă există o problemă de cache, trebuie să remediați afinitatea VM și în setările avansate ESXi/vSphere.
Puncte:0
drapel cn

Aceasta este o problemă cunoscută a FireBird.

Am gestionat unii clienți care sunt pe FireBird pentru diverse software, iar statistica multhreading-ului este greu de configurat cu .conf, dar mai întâi trebuie să instalați Firebird cu setările de care aveți nevoie pentru utilizarea multicpu-ului, server clasic.

introduceți descrierea imaginii aici

Nu uitați că și aplicația client are nevoie de biblioteca multithreadin sigură dacă doriți să fiți sigur.

Biblioteca client thread-safe

Biblioteca client thread-safe

Dmitri Yemanov
Vladislav Khorsun
Alex Peshkov

Tracker de referință CORE-707.

Bibliotecile client, inclusiv cea încorporată, pot fi acum utilizate în aplicații cu mai multe fire fără nicio aplicație la nivel de aplicație

sincronizare.

MenInTheMiddle avatar
drapel cn
Multumesc pentru raspuns. Folosesc firebird 3 (superserver), versiunea 3 pare optimizată pentru lucrul cu mai multe nuclee (obiectivele principale pentru Firebird 3.0 au fost să unifice arhitectura serverului și să îmbunătățească suportul pentru SMP și platformele hardware cu mai multe nuclee - firebirdsql.org). Voi încerca oricum cu configurația clasică a serverului, vă voi anunța
yagmoth555 avatar
drapel cn
@MenInTheMiddle oh ok, nu am văzut versiunea 3, atunci asigurați-vă că utilizați afinitatea, atunci dacă pe superserver, implicit clasic nu aveți nevoie de ea, dar pe superserver funcționează, dar aveți nevoie de setările setate dacă îmi amintesc corect

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.