Një inxhinier i Amazon identifikoi një regres specifik për kernelin Linux 7.0, i cili pritet të publikohet më 13 prill. Një ndryshim në cilësimet e planifikuesit të detyrave rezultoi në një ulje të ndjeshme të rendimentit dhe reagimit gjatë ekzekutimit të PostgreSQL në sistemet ARM64. Duke përdorur kernelin 7.0, performanca në testin "simple-update" të pgbench ra pothuajse dyfish, nga 98565 në 50751.
Ngadalësimi u shkaktua nga ndryshimi i modalitetit të parazgjedhur të parazgjedhjes së planifikuesit nga PREEMPT_NONE në PREEMPT_LAZY në arkitekturat që e mbështesin atë. Kjo bëri që PostgreSQL të shpenzonte 55% të kohës së CPU-së duke thirrur s_lock() në hapësirën e përdoruesit. Për të adresuar këtë problem, propozohet të kthehet PREEMPT_NONE në vlerën e parazgjedhur dhe të shkëputet nga cilësimi ARCH_NO_PREEMPT.
Peter Zijlstra, autori i ndryshimeve që shkaktuan regresionin dhe mirëmbajtësi i nënsistemeve të planifikuesit të detyrave dhe bërthamës që lidhen me kyçjen, deklaroi se duhet të zbatohet një rregullim në kodin PostgreSQL. Për të adresuar degradimin e performancës, ai rekomandoi përdorimin e shtesës "rseq slice" (Sekuenca të Rinisura) të shtuar së fundmi në bërthamën PostgreSQL për të kufizuar mundësinë e nxjerrjes së mbajtësit të kyçjes.
Ende nuk është e qartë se çfarë vendimi do të marrë Linus Torvalds, pasi ai i përmbahet parimit që kerneli nuk duhet të degradojë performancën ose të prishë përputhshmërinë e hapësirës së përdoruesit. Nga njëra anë, kerneli 7.0 është në fazën përfundimtare të testimit para publikimit dhe rikthimi i cilësimeve të planifikuesit mund të çojë në regresione të tjera. Nga ana tjetër, përdoruesit mund të përjetojnë një përgjysmim të performancës së një prej bazave të të dhënave më të njohura.
Burimi: opennet.ru
