เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเป„เบ”เป‰เบ–เบทเบเบ„เบปเป‰เบ™เบžเบปเบšเปƒเบ™ kernel Linux 7.0 เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ PostgreSQL เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ„เบดเปˆเบ‡เปœเบถเปˆเบ‡.

เบงเบดเบชเบฐเบงเบฐเบเบญเบ™ Amazon เป„เบ”เป‰เบฅเบฐเบšเบธเบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเบชเบฐเป€เบžเบฒเบฐเบเบฑเบš Linux kernel 7.0, เป€เบŠเบดเปˆเบ‡เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปƒเบ™เบงเบฑเบ™เบ—เบต 13 เป€เบกเบชเบฒ. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบงเบฅเบฒเปœเป‰เบฒเบงเบฝเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ›เบฐเบฅเบดเบกเบฒเบ™เบงเบฝเบ เปเบฅเบฐ เบเบฒเบ™เบ•เบญเบšเบชเบฐเปœเบญเบ‡เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป€เบกเบทเปˆเบญเปƒเบŠเป‰ PostgreSQL เปƒเบ™เบฅเบฐเบšเบปเบš ARM64. เบเบฒเบ™เปƒเบŠเป‰ kernel 7.0, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš "simple-update" เบ‚เบญเบ‡ pgbench เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบเบทเบญเบšเบชเบญเบ‡เป€เบ—เบปเปˆเบฒ, เบˆเบฒเบ 98565 เป€เบ›เบฑเบ™ 50751.

เบเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡เปเบกเปˆเบ™เป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เป‚เปเบ” preempt เบ‚เบญเบ‡เบ•เบปเบงเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ PREEMPT_NONE เป€เบ›เบฑเบ™ PREEMPT_LAZY เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบกเบฑเบ™. เบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ PostgreSQL เปƒเบŠเป‰เป€เบงเบฅเบฒ CPU 55% เบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™ s_lock() เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เปœเบตเปƒเบซเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™ PREEMPT_NONE เบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปเบฅเบฐ เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบกเบฑเบ™เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ ARCH_NO_PREEMPT.

เบ—เปˆเบฒเบ™ Peter Zijlstra, เบœเบนเป‰เบ‚เบฝเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ–เบปเบ”เบ–เบญเบ เปเบฅเบฐ เบœเบนเป‰เบฎเบฑเบเบชเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบงเบฅเบฒเปœเป‰เบฒเบงเบฝเบ เปเบฅเบฐ เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡เป€เบ„เบตเป€เบ™เบฅเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบ, เป„เบ”เป‰เบเปˆเบฒเบงเบงเปˆเบฒ เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบฅเบฐเบซเบฑเบ” PostgreSQL. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบชเบทเปˆเบญเบกเป‚เบŠเบกเบ‚เบญเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบฅเบฒเบงเป„เบ”เป‰เปเบ™เบฐเบ™เบณเปƒเบซเป‰เปƒเบŠเป‰เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ "rseq slice" (Restartable Sequences) เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเปเปˆเปƒเบ™เป€เบ„เบตเป€เบ™เบฅ PostgreSQL เป€เบžเบทเปˆเบญเบˆเบณเบเบฑเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ–เบทเบเป„เบฅเปˆเบญเบญเบเบˆเบฒเบเบœเบนเป‰เบ–เบทเบฅเบฑเบญเบ.

เบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบˆเบฐเปเบˆเป‰เบ‡เป€เบ—เบทเปˆเบญเบงเปˆเบฒ Linus Torvalds เบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปเบ™เบงเปƒเบ”, เบเป‰เบญเบ™เบงเปˆเบฒเบฅเบฒเบงเบเบถเบ”เปเบฑเป‰เบ™เบซเบผเบฑเบเบเบฒเบ™เบ—เบตเปˆเบงเปˆเบฒ kernel เบšเปเปˆเบ„เบงเบ™เบซเบผเบธเบ”เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš เบซเบผเบท เบ—เบณเบฅเบฒเบเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เปƒเบ™เบ”เป‰เบฒเบ™เปœเบถเปˆเบ‡, kernel 7.0 เบžเบงเบกเบขเบนเปˆเปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบธเบ”เบ—เป‰เบฒเบเบเปˆเบญเบ™เบเบฒเบ™เบ›เปˆเบญเบ, เปเบฅเบฐ เบเบฒเบ™เบกเป‰เบงเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ scheduler เบเบฑเบšเบ„เบทเบ™เบญเบฒเบ”เบˆเบฐเบ™เบณเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ–เบปเบ”เบ–เบญเบเบญเบทเปˆเบ™เป†. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เบˆเบฐเบ›เบฐเบชเบปเบšเบเบฑเบšเบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ„เบดเปˆเบ‡เปœเบถเปˆเบ‡เบ‚เบญเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบตเปˆเบชเบธเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™