Amazon инженери Linux ядросу 7.0 үчүн мүнөздүү регрессияны аныктады, ал 13-апрелде чыгарылышы күтүлүүдө. Тапшырмаларды пландаштыргычтын жөндөөлөрүнүн өзгөрүшү ARM64 системаларында PostgreSQL иштетилгенде өткөрүү жөндөмдүүлүгүнүн жана жооп кайтаруунун олуттуу төмөндөшүнө алып келди. 7.0 ядросун колдонууда pgbench "жөнөкөй жаңыртуу" тестиндеги көрсөткүч дээрлик эки эсеге төмөндөп, 98 565тен 50 751ге чейин төмөндөдү.
Бул жайлоо аны колдогон архитектураларда демейки пландаштыргычтын алдын ала иштетүү режимин PREAMPT_NONEдон PREAMPT_LAZYга өзгөртүүдөн улам келип чыккан. Бул PostgreSQLдин CPU убактысынын 55%ын колдонуучу мейкиндигинде s_lock() функциясын чакырууга коротушуна алып келген. Бул көйгөйдү чечүү үчүн, PREEMPT_NONE функциясын демейки абалга кайтарып, аны ARCH_NO_PREEMPT жөндөөсүнөн ажыратуу сунушталат.
Регрессияга алып келген өзгөртүүлөрдүн автору жана тапшырмаларды пландаштыргычтын жана кулпуга байланыштуу ядронун ички системаларын тейлөөчү Питер Зийлстра PostgreSQL кодунда оңдоону ишке ашыруу керектигин билдирди. Аткаруу начарлашын чечүү үчүн, ал кулпу ээсинин чыгарылып кетүү ыктымалдыгын чектөө үчүн PostgreSQL ядросуна жакында кошулган "rseq slice" (Restartable Sequences) кеңейтүүсүн колдонууну сунуштады.
Линус Торвальдс кандай чечим кабыл алаары азырынча белгисиз, анткени ал ядро иштөөнү начарлатпашы же колдонуучу мейкиндигинин шайкештигин бузбашы керек деген принципти карманат. Бир жагынан, 7.0 ядросу чыгарылыш алдындагы акыркы сыноо этабында, ал эми пландаштыргычтын жөндөөлөрүн артка жылдыруу башка регрессияларга алып келиши мүмкүн. Экинчи жагынан, колдонуучулар эң популярдуу маалымат базаларынын биринин иштешинин эки эсеге азайышына дуушар болушу мүмкүн.
Source: opennet.ru
