170 похожих чатов

Кто-Нибудь знает, в го всего один поток на epoll ивент-лупе?

Вижу, что инициализируется он всего один раз, но такое чувство, что это должно быть менее перформно, если б они разделили на луп для разных ивентов
https://github.com/golang/go/blob/master/src/runtime/netpoll_epoll.go#L23

25 ответов

28 просмотров

странная идея если там событий столько, что один поток не справляется - у нас пороблемы посерьезнее, чем производительность

Evg-Resh Автор вопроса
Daniel Podolsky
странная идея если там событий столько, что один ...

Там событий всегда фиксированное количество. Создание/Запись/Чтение

Evg-Resh Автор вопроса
Daniel Podolsky
странная идея если там событий столько, что один ...

Как это сделано в netty, например. Правда там еще есть возможность сделать отдельный луп. Просто хотел уточнить, правильно ли я понимаю или чего-то не вижу

Evg Resh
Как это сделано в netty, например. Правда там еще ...

так в go было всегда и действительно, есть сценарии когда это может стать бутылочным горлышком, из-за чего был придуман вот такой пакет https://pkg.go.dev/github.com/valyala/fasthttp/prefork#section-readme (идея в том, чтобы запустить несколько приложений на 1 порту с GOMAXPROCS=1)

Evg-Resh Автор вопроса

На один - да, но можно мультиплексить, тем более я говорил про типы ивентов, а не про fd

Evg Resh
На один - да, но можно мультиплексить, тем более я...

А как это должно работать? Вы же заранее не знаете какое событие придёт на fd

Evg-Resh Автор вопроса
Евгений Омельченко
А как это должно работать? Вы же заранее не знаете...

Ты всегда знаешь на уровне стандартной библиотеки, какие у тебя операции, выделяешь n-поллеров для чтение/запись, а далее регистрируешь fd в зависимости от типа

Я сразу скажу, что fasthttp не использовал, но видимо это связано с большим количеством очень мелких запросов

Владимир Столяров
Я сразу скажу, что fasthttp не использовал, но вид...

Высокий pps решается батчингом, а не мультиплексированием

Daniel Podolsky
Ну-ка, это какие?

высокая нагрузка быстрыми не связанными между собой запросами но часть насчет GOMAXPROCS — не всегда нужно =1, иногда нужно просто меньше чем дефолт, когда потоков много

помнится syscallы все равно нужно выполнять из systemstack(), зачем для этого больше потоков?

Evg Resh
На один - да, но можно мультиплексить, тем более я...

так оно мультиплексит, только между r/w эвентами, там в netpollready создается по горутине на чтение и запись из дескриптора. (если я правильно понял, орентироватся в системном коде сложно, а понимать еше сложнее)

Evg-Resh Автор вопроса
Kirill D
помнится syscallы все равно нужно выполнять из sys...

Не совсем вас понимаю, любое исполнение на system stack, просто стек горутины паркуется и депаркуется, это же никак не связано, не?

Daniel Podolsky
Ну-ка, это какие?

это когда надо выжать больше перфа из сервера

Павλо 🇺🇦
это когда надо выжать больше перфа из сервера

префорк выигрывает за счет того, что вместо использования гошного лупа, мы используем напрямую нужный нам еполл/ккью/какую-нибудь дичь под виндой упд: мне кажется, я где-то ошибся, сейчас исправлюсь

Dmitriy Sviridov
Который не делает ничего?

если он не делает ничего, то и префорк включать никто не будет

Павλо 🇺🇦
префорк выигрывает за счет того, что вместо исполь...

Так ведь он не так работает же, просто запускает N процессов с gomaxprocs=1, добавляя на сокет опцию reuseport

Павλо 🇺🇦
префорк выигрывает за счет того, что вместо исполь...

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

https://lwn.net/Articles/542629/ Собственно основной смысл добавления reuseport расписан здесь

Владимир Столяров
https://lwn.net/Articles/542629/ Собственно основн...

спасибо но тут описана только причина добавления, а мне интересно узнать, почему го делает то же самое, но медленнее

Evg Resh
Не совсем вас понимаю, любое исполнение на system ...

я к тому, что там будет переключение на g0

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта