Новости ИИ помог найти баг в Linux, попутно убил тестовый диск и потом сам же починил. Обычная пятница у разработчиков ядра

NewsMaker

I'm just a script
Премиум
24,581
46
8 Ноя 2022
Программирование — это просто.

Иногда самые громкие ускорения в производительности выглядят почти как шутка. Разработчик Linux и ведущий автор io_uring Jens Axboe нашел причину странных тормозов при работе QEMU с дисками AHCI и SCSI, а затем предложил исправление, которое на «пустых» системах дает прирост на стороне io_uring в десятки раз.

Проблема всплыла во время прогона регрессионных тестов io_uring внутри виртуальной машины. На устройствах AHCI тесты могли случайно «зависать» и падать по таймауту, тогда как на virtio-blk или NVMe те же сценарии укладывались примерно в секунду. Axboe разобрался, что в одном из циклов обработки событий QEMU вызов ppoll() мог заснуть на 500 мс даже тогда, когда уже было что отправлять в очередь I/O. Для приложений это выглядело как необъяснимая задержка в полсекунды на ровном месте.


42jl7knap6ah2lw8xskd97cky4z6x96h.png


Самое интересное в том, что ключевое исправление сводится к одной строке кода, остальное это комментарии. После постановки SQE добавляется уведомление основного цикла, и он просыпается сразу, вместо того чтобы ждать до 499 мс и только потом отправлять запросы в io_uring. В обсуждении патча прямо сказано, что без этого уведомления ppoll() может «проспать» почти полсекунды перед submit, а для AHCI и SATA это особенно болезненно из-за MMIO и отсутствия механизма, который обычно будит цикл у virtio через ioeventfd.

Разбираться в цепочке событий Axboe помогал Claude , и по его словам ИИ в итоге помог лучше понять, как именно связаны разные event loop’ы. По пути Claude даже частично «убил» виртуальный диск тестовой ВМ, но затем сумел восстановиться.

По состоянию на 18 февраля 2026 года оба исправления уже приняли в block-ветку QEMU, то есть они движутся к включению в проект.
 
Источник новости
www.securitylab.ru

Похожие темы