The OpenNET Project / Index page

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



"Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..." +/
Сообщение от Ivan_83 (ok), 16-Сен-22, 16:06 
И попутно.
Всякие libev, libevent и прочее что я видел это были решения как раз для построения модели:
1 поток - один kqueue()/epoll()/poll().
А дальше крутись как хочешь.

Это системная проблема индустрии, которую С програмисты в опенсорце не решили.
Или я плохо искал.
Отчасти это потому что epoll()/poll() разделяют события записи/чтения на дескрипторе, и один сокет может тригернуть сразу два разных потока, и их нужно между собой синхронизировать. (а может и больше двух, там ещё ошибки тригерят пробуждение потоков).
kquque() может тригерить а может не тригерить несколько потоков, зависит от флагов указанных при добавлении дескриптора.

В целом конечно же раздельное тригирение потоков на запись/чтение оно должно было увеличить производительноть, типа в сокет можно и писать и читать сразу, но на практике там же в ядре тоже какие то блокировки для этого есть, и к этому нужны блокировки в приложении, чтобы один поток не грохнул данные связанные с сокетом пока второй с ними работает.

Вот о чём речь, когда доходит до построения рабочего решения: куча потоков на одном kqueue()/epoll()/poll().

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

Оглавление
Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust, opennews, 16-Сен-22, 11:01  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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