Ua ʻike kekahi ʻenekinia Amazon i kahi regression kūikawā i ka Linux kernel 7.0, kahi i manaʻo ʻia e hoʻokuʻu ʻia ma ʻApelila 13. ʻO kahi hoʻololi i nā hoʻonohonoho hoʻonohonoho hana i hopena i ka emi nui ʻana o ka throughput a me ka pane ʻana i ka wā e holo ai ʻo PostgreSQL ma nā ʻōnaehana ARM64. Ma ka hoʻohana ʻana i ka kernel 7.0, ua hāʻule ka hana ma ka hoʻāʻo "simple-update" pgbench ma kahi o ʻelua manawa, mai 98565 a i 50751.
Ua hoʻokumu ʻia ka lohi ʻana ma muli o ka hoʻololi ʻana i ke ʻano hoʻonohonoho mua o ka mea hoʻonohonoho paʻamau mai PREEMPT_NONE a i PREEMPT_LAZY ma nā ʻano hana e kākoʻo ana iā ia. Ua hoʻolilo kēia iā PostgreSQL i 55% o kona manawa CPU e kāhea ana iā s_lock() i ka wahi mea hoʻohana. No ka hoʻoponopono ʻana i kēia pilikia, ua manaʻo ʻia e hoʻihoʻi iā PREEMPT_NONE i ka paʻamau a wehe iā ia mai ka hoʻonohonoho ARCH_NO_PREEMPT.
ʻO Peter Zijlstra, ka mea kākau o nā hoʻololi i hoʻoulu ai i ka regression a me ka mea mālama o ka mea hoʻonohonoho hana a me nā ʻōnaehana kernel e pili ana i ka laka, ua ʻōlelo ʻo ia e pono e hoʻokō ʻia kahi hoʻoponopono i ke code PostgreSQL. No ka hoʻoponopono ʻana i ka hōʻino ʻana o ka hana, ua ʻōlelo ʻo ia e hoʻohana i ka hoʻonui "rseq slice" (Restartable Sequences) i hoʻohui hou ʻia i loko o ka kernel PostgreSQL e kaupalena i ka hiki ke hoʻokuke ʻia ka mea paʻa laka.
ʻAʻole maopopo i kēia manawa ka hoʻoholo a Linus Torvalds e hana ai, ʻoiai ʻo ia e pili ana i ke kumumanaʻo ʻaʻole pono ka kernel e hoʻohaʻahaʻa i ka hana a uhaki paha i ka launa pū ʻana o ka wahi mea hoʻohana. Ma kekahi ʻaoʻao, aia ka kernel 7.0 i ka pae hoʻāʻo hope loa ma mua o ka hoʻokuʻu ʻia ʻana, a ʻo ka hoʻihoʻi ʻana i nā hoʻonohonoho hoʻonohonoho manawa hiki ke alakaʻi i nā regression ʻē aʻe. Ma kekahi ʻaoʻao, hiki i nā mea hoʻohana ke ʻike i ka hapalua o ka hana o kekahi o nā waihona ʻikepili kaulana loa.
Source: opennet.ru
