vak: (Default)
[personal profile] vak
Народ, кто-нибудь уже поимел опыт с <linux/io_uring.h>? Как оно по жизни?

Неожиданно для себя обнаружил, что в Линуксе пять лет назад появилась крутая фича. А именно три системных вызова, реализующих эффективный асинхронный интерфейс ко всем сервисам ядра.
  • int io_uring_setup(unsigned entries, struct io_uring_params *p);
  • int io_uring_enter(unsigned fd, unsigned to_submit, unsigned min_complete, unsigned flags, sigset_t *sig);
  • int io_uring_register(unsigned fd, unsigned opcode, void *arg, unsigned nr_args);
Революционная штука, как я погляжу. Может коренным образом изменить подход к разработке приложений. Только сложновато для программиста выходит. Есть статьи про это дело.

Date: 2025-02-19 20:05 (UTC)
lev: (Default)
From: [personal profile] lev
джизус крайст. а async io без поллинга никак? не признают богомерзких threads?

Date: 2025-02-19 20:30 (UTC)
lev: (Default)
From: [personal profile] lev
пардон, опять туплю. контекст переключается медленне, чем приходят байты с конечного устройства?
Edited Date: 2025-02-19 20:30 (UTC)

Date: 2025-02-19 20:50 (UTC)
lev: (Default)
From: [personal profile] lev
интересно, i286 успевал обрабатывать внешний модем на com порту с 56к/сек (там же вроде бы прерывание на байт).

Date: 2025-02-19 21:07 (UTC)
lev: (Default)
From: [personal profile] lev
ok, даже с фифо, если прерывание на половине буфера, это 7к/сек

Date: 2025-02-19 21:27 (UTC)
lev: (Default)
From: [personal profile] lev
все таки, меня удивляет такое медленное переключение контекста.

Date: 2025-02-20 20:27 (UTC)
From: [personal profile] sassa_nf
It's not just speed of context switch. If you have 10M connections, you just can't have thread-per-connection. So you need ways of processing orders of magnitude more connections than you have threads.