Таймауты poll и epoll в Redox переработаны: точность сильно выросла
30.05.2026В ядре Redox переработан механизм таймаутов событий ввода-вывода, а в relibc добавлена его поддержка. Точность poll и epoll при ограничении по времени выросла заметно; автор сводки заявляет также четырёхкратное ускорение самих вызовов.
Зачем таймаут в poll
poll и epoll ждут, пока хоть один дескриптор не станет готов. Чтобы ожидание не длилось вечно, передаётся предельное время: если за него ничего не произошло, вызов возвращается с нулевым результатом.
На этот параметр опирается огромное количество кода: сетевые клиенты с таймаутом соединения, циклы событий с периодическим просыпанием, таймеры в тестах.
Что было плохо
Точность таймаутов, по формулировке сводки, была плохой — и это опаснее, чем медленно: программа, которая рассчитывает подождать 50 миллисекунд и затем повторить попытку, могла ждать заметно дольше или заметно меньше. И то и другое ломает логику: таймауты сетевых операций, повторные попытки, расчёт интервалов.
Как сделано
Событию ввода-вывода присвоен идентификатор EVENT_TIMEOUT_ID, а обработка таймаута вынесена в отдельный механизм ядра. В relibc появилась соответствующая поддержка — иначе новый путь просто не использовался бы из пользовательского пространства. Работы растянулись на две недели: идентификатор добавлен 23 мая, поддержка в libc — 30 мая.
О числах
Сводка заявляет ускорение poll и epoll примерно в четыре раза, причём «на QEMU с KVM и на настоящем железе улучшение может быть значительно больше». Отдельно отмечено, что это замер без KVM.
Четырёхкратное ускорение отдельным коммитом не подтверждается: компилятор и ядро и ядро меняли подход к обработке событий в том же месяце, и выделить вклад конкретного изменения без повторного замера нельзя. Поэтому как проверенный факт здесь только переработка таймаутов.
Оригинал
Коммиты Add EVENT_TIMEOUT_ID от 23 мая и Add timeout for events от 30 мая 2026 года в redox-os/kernel, а также Implement event timeout with EVENT_TIMEOUT_ID от 30 мая в redox-os/relibc; сводка «This Month in Redox — May 2026», раздел «Massive Performance Improvement On I/O Event Wait»
Упоминаний: 1 · Просмотров: 2