Onímọ̀ ẹ̀rọ Amazon kan ṣàwárí ìyípadà kan pàtó sí Linux kernel 7.0, èyí tí a retí pé a óò tú jáde ní ọjọ́ kẹtàlá oṣù kẹrin. Ìyípadà nínú àwọn ètò ìṣètò iṣẹ́-ṣíṣe yọrí sí ìdínkù pàtàkì nínú throughput àti responsiveness nígbà tí a bá ń lo PostgreSQL lórí àwọn ètò ARM64. Nípa lílo kernel 7.0, iṣẹ́ nínú ìdánwò "simple-update" pgbench dínkù ní ìlọ́po méjì, láti 98565 sí 50751.
Ìdínkù náà wáyé nítorí yíyí ipò ìṣàyẹ̀wò ètò ìṣàyẹ̀wò àìyípadà láti PREEMPT_NONE sí PREEMPT_LAZY lórí àwọn ètò ìṣàfihàn tí ó ń ṣe àtìlẹ́yìn fún un. Èyí mú kí PostgreSQL lo 55% àkókò CPU rẹ̀ láti pe s_lock() ní ààyè olùlò. Láti yanjú ìṣòro yìí, a dámọ̀ràn láti dá PREEMPT_NONE padà sí ààyè àìyípadà kí a sì yọ ọ́ kúrò nínú ètò ARCH_NO_PREEMPT.
Peter Zijlstra, ẹni tí ó kọ àwọn àyípadà tí ó fa ìfàsẹ́yìn àti olùtọ́jú olùṣètò iṣẹ́ àti àwọn ẹ̀rọ kérẹ́lì tí ó ní í ṣe pẹ̀lú lock-related kernel, sọ pé ó yẹ kí a ṣe àtúnṣe kan nínú kódì PostgreSQL. Láti kojú ìbàjẹ́ iṣẹ́, ó dámọ̀ràn lílo ìfàsẹ́yìn "rseq slice" (Restartable Sequences) tí a ṣẹ̀ṣẹ̀ fi kún un nínú kernel PostgreSQL láti dín àǹfààní ìyọkúrò àwọn ohun èlò ìdènà kù.
Kò tíì yé wa pé ìpinnu tí Linus Torvalds yóò ṣe yóò jẹ́, nítorí ó tẹ̀lé ìlànà náà pé kò gbọdọ̀ ba iṣẹ́ jẹ́ tàbí kí ó ba ìbáramu àwọn olùlò jẹ́. Ní ọwọ́ kan, kernel 7.0 wà ní ìpele ìdánwò ìkẹyìn kí a tó tú u sílẹ̀, àti pé yíyí àwọn ètò ìṣètò padà lè yọrí sí àwọn ìyípadà mìíràn. Ní ọwọ́ kejì ẹ̀wẹ̀, àwọn olùlò lè ní ìrírí ìdajì iṣẹ́ ọ̀kan lára àwọn ibi ìkópamọ́ data tó gbajúmọ̀ jùlọ.
orisun: opennet.ru
