A ti ṣe awari ipadabọ kan ninu ekuro Linux 7.0 ti o dinku iṣẹ PostgreSQL nipasẹ idaji.

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

Fi ọrọìwòye kun