Linux (Архитектура): Почему epoll устарел? Революция io_uring
Боль: Высоконагруженные базы данных (PostgreSQL, Redis) и веб-серверы тратят до 30% времени CPU просто на "общение" с ядром (System Calls). Старый механизм асинхронного ввода-вывода (epoll) требует постоянных переключений контекста.
Революция: io_uring Это новый интерфейс ядра Linux (появился в 5.1, стал стандартом сейчас), который меняет всё.
В чем суть (на пальцах):
epoll: Приложение: "Ядро, есть данные?" -> Ядро: "Нет" -> Приложение ждет -> Ядро: "Есть" -> Приложение: "Дай". (Куча системных вызовов).
io_uring: Приложение и Ядро создают два кольцевых буфера (Ring Buffers) в общей памяти.
Приложение кладет запрос в буфер "Submission".
Ядро забирает его, делает работу и кладет результат в буфер "Completion".
Ноль системных вызовов (Zero Syscall overhead).
Взгляд архитектора: Если вы видите, что ваш Nginx или MySQL после обновления ядра стали работать на 20-40% быстрее — это io_uring. Архитектор должен знать: для I/O-intensive задач (файловые хранилища, БД) выбор дистрибутива с новым ядром (5.10+) — это бесплатный прирост производительности.
#linux #kernel #performance #iouring #epoll #architect #highload
Боль: Высоконагруженные базы данных (PostgreSQL, Redis) и веб-серверы тратят до 30% времени CPU просто на "общение" с ядром (System Calls). Старый механизм асинхронного ввода-вывода (epoll) требует постоянных переключений контекста.
Революция: io_uring Это новый интерфейс ядра Linux (появился в 5.1, стал стандартом сейчас), который меняет всё.
В чем суть (на пальцах):
epoll: Приложение: "Ядро, есть данные?" -> Ядро: "Нет" -> Приложение ждет -> Ядро: "Есть" -> Приложение: "Дай". (Куча системных вызовов).
io_uring: Приложение и Ядро создают два кольцевых буфера (Ring Buffers) в общей памяти.
Приложение кладет запрос в буфер "Submission".
Ядро забирает его, делает работу и кладет результат в буфер "Completion".
Ноль системных вызовов (Zero Syscall overhead).
Взгляд архитектора: Если вы видите, что ваш Nginx или MySQL после обновления ядра стали работать на 20-40% быстрее — это io_uring. Архитектор должен знать: для I/O-intensive задач (файловые хранилища, БД) выбор дистрибутива с новым ядром (5.10+) — это бесплатный прирост производительности.
#linux #kernel #performance #iouring #epoll #architect #highload
❤4