Amazonov inženir je odkril regresijo, specifično za jedro Linuxa 7.0, ki naj bi izšlo 13. aprila. Sprememba nastavitev razporejevalnika opravil je povzročila znatno zmanjšanje prepustnosti in odzivnosti pri izvajanju PostgreSQL v sistemih ARM64. Z uporabo jedra 7.0 se je zmogljivost v testu »simple-update« v pgbenchu skoraj podvojila, z 98565 na 50751.
Upočasnitev je bila posledica spremembe privzetega načina preempcije razporejevalnika iz PREEMPT_NONE v PREEMPT_LAZY na arhitekturah, ki ga podpirajo. Zaradi tega je PostgreSQL porabil 55 % časa procesorja za klicanje s_lock() v uporabniškem prostoru. Za odpravo te težave se predlaga, da se PREEMPT_NONE vrne na privzeto vrednost in se odklopi od nastavitve ARCH_NO_PREEMPT.
Peter Zijlstra, avtor sprememb, ki so povzročile regresijo, in vzdrževalec razporejevalnika opravil in podsistemov jedra, povezanih z zaklepanjem, je izjavil, da je treba v kodo PostgreSQL implementirati popravek. Za odpravo poslabšanja zmogljivosti je priporočil uporabo nedavno dodane razširitve »rseq slice« (Restartable Sequences) v jedru PostgreSQL, da se omeji verjetnost izselitve imetnika zaklepanja.
Še vedno ni jasno, kakšno odločitev bo sprejel Linus Torvalds, saj se drži načela, da jedro ne sme poslabšati zmogljivosti ali prekiniti združljivosti uporabniškega prostora. Po eni strani je jedro 7.0 v zadnji fazi testiranja pred izdajo, zato bi lahko povrnitev nastavitev razporejevalnika povzročila druge regresije. Po drugi strani pa bi lahko uporabniki izkusili prepolovitev zmogljivosti ene najbolj priljubljenih baz podatkov.
Vir: opennet.ru
