The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэшированию запросов времени, opennews (??), 16-Янв-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


18. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +/
Сообщение от Аноним (13), 17-Янв-24, 00:36 
Объясните мне, зачем взаимодействие с io_uring вообще идёт через сисколы? Для настройки и заверления зачем сискол нужен понятно. Но зачем нужен io_uring_enter? Ядро же само в отдельном потоке на отдельном ядре может проверить кольцевой буфер, без всякого сискола в потоке приложения. Ядро и так переключает потоки и процессы по таймеру и событиям, может заодно и буффер проверять. В результате при таком механизме вообще никаких доп. задержек на сисколы от приложения. Зачем нужен этот сисколл?
Ответить | Правка | Наверх | Cообщить модератору

19. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +/
Сообщение от Аноним (19), 17-Янв-24, 00:42 
Что-то у меня ощущение, что будет лагать. А как сообщить с nohz, когда прерывания не тикают?
Ответить | Правка | Наверх | Cообщить модератору

40. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +/
Сообщение от Аноним (39), 17-Янв-24, 01:51 
С nohz прерывания на процессорном ядре не тикают только если runnable таска только одна.
Ответить | Правка | Наверх | Cообщить модератору

96. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +1 +/
Сообщение от Аноним (96), 17-Янв-24, 11:19 
В спинлоке что-ли ядро должно мониторить кольцевой буфер?
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

105. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +/
Сообщение от Аноним (105), 17-Янв-24, 12:48 
Варианты возможны. Можно и в спинлоке (как оказалось, на новых процах он эффективный). А можно и подождать, пока контекст естественным образом переключится на ядро: сетевой пакет там прийдёт, или пользователь мышью двинет, или таймер вытесняющей многозадачности сработает... Должно решаться адаптивно. Если поток событий i/o через io_uring высок, то выделить ядра cpu только под ядерный код. Если поток небольшой - то ждать естественного переключения на ядро.
Ответить | Правка | Наверх | Cообщить модератору

122. "Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэ..."  +/
Сообщение от Аноним (117), 17-Янв-24, 15:14 
Инструкцию пробовал читать?

Ядро переключает потоки через прерывание, которое потом обрабатывается на одном из ядер вытесняя обычные приложения. Ядро не может здесь делать ничего тяжёлого.

io_uring может использоваться в разных вариантах, в частности можно запустить обработку сразу в отдельном ядерном потоке и тогда io_uring_enter(...) нужен для управления потоком и синхронизации. А можно и не запускать. В остальных случаях io_uring_enter(...) для приложения работает как более эффективный poll-ер с гранулярной настройкой порога срабатывания, позволяющий снижать кол-во сисколов при прочих равных.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру