Проблема медленного выключения серверов
Разработчики из Red Hat, возглавляемые Дэвидом Джеффри (David Jeffery), продолжают работу над механизмом асинхронного завершения работы устройств в ядре Linux. Эта инициатива, существующая уже более двух лет, направлена на решение критической проблемы: при наличии множества устройств (особенно NVMe-накопителей) последовательное их отключение занимает неприемлемо много времени, что блокирует полную остановку системы.
Результаты тестирования: от минут к секундам
В сопроводительном письме к патчам Дэвид Джеффри привел впечатляющие цифры, демонстрирующие масштаб оптимизации. На тестовых стендах с несколькими NVMe-дисками внедрение асинхронного отключения дало следующий эффект:
| Сценарий | Время выключения (без патча) | Время выключения (с патчем v21) | Ускорение |
|---|---|---|---|
| Сервер с несколькими NVMe | 11 минут (660 сек) | 55 секунд | ~12x |
| Другой тестовый стенд | 80 секунд | 11 секунд | ~7.3x |
Технические детали реализации
Набор из девяти патчей (версия v21) отправлен на рассмотрение в список рассылки разработчиков ядра Linux. Ключевые особенности решения:
- Параллелизм: Независимые устройства могут отключаться одновременно, а не по очереди.
- Безопасность: Устройства должны явно «оптовить» (opt-in) поддержку асинхронного завершения, чтобы избежать конфликтов и потери данных.
- Стабильность: Работа ведется уже более двух лет, что говорит о тщательном тестировании и учете edge-кейсов.
Перспективы попадания в mainline
На данный момент патчи находятся на стадии ревью. Если сообщество Linux ядра одобрит изменения, эта функциональность может быть включена в основную ветку ядра в ближайшем будущем. Для дата-центров и серверных инфраструктур, где время простоя при перезагрузках критично, это изменение может стать значительным улучшением операционной эффективности.
Источник: Phoronix ↗
