Un inginer de la compania Amazon a identificat o regresie specifică pentru nucleul Linux 7.0, ale cărui lansare este așteptată pe 13 aprilie. Modificarea setărilor planificatorului de sarcini a dus la o reducere semnificativă a capacității de procesare și a timpului de răspuns în utilizarea SGBD-ului PostgreSQL pe sisteme cu arhitectură ARM64. Atunci când se folosește nucleul 7.0, indicatorii de performanță la testul pgbench „simple-update” au scăzut aproape de două ori — de la 98565 la 50751.
Încetinirea este cauzată de schimbarea modului de eliminare (preemption) în planificatorul implicit de la PREEMPT_NONE la PREEMPT_LAZY pe arhitecturile care suportă acest mod, ceea ce a dus la faptul că în spațiul utilizatorului PostgreSQL a petrecut 55% din timpul CPU apelând s_lock(). Pentru a rezolva problema, s-a propus revenirea la mod implicit PREEMPT_NONE și îndepărtarea legăturii acestuia cu setarea ARCH_NO_PREEMPT.
Peter Zijlstra, autorul modificărilor care au cauzat regresia și întreținătorul planificatorului de sarcini și al subsistemelor de blocare ale nucleului, a declarat că corectarea trebuie să fie efectuată în codul PostgreSQL. Pentru a remedia scăderea performanței, a sfătuit să se utilizeze în PostgreSQL extensia recent adăugată în nucleu „rseq slice” (Secvențe Restartabile) pentru a limita probabilitatea eliminării deținătorului de blocaj.
Până acum nu este clar ce decizie va lua Linus Torvalds, care respectă regula că nucleul nu trebuie să degradeze performanța și să rupă compatibilitatea cu spațiul utilizatorului. Pe de o parte, nucleul 7.0 se află în etapa finală de testare înainte de lansare și revenirea la setările planificatorului ar putea duce la alte regresii, iar pe de altă parte, utilizatorii ar putea întâmpina o scădere de două ori a performanței uneia dintre cele mai populare SGBD-uri.
Sursa: opennet.ro
