Nikolay
https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/
Nikolay
держите по iocp и epool - читайте
Daniel
http://yusufonlinux.blogspot.ru/2010/11/data-link-access-and-zero-copy.html
Daniel
насколько я понимаю - синхронный IO этим механизмом не снабжен. но могу и ошибаться.
Daniel
zero-copy повышает производительность сетевых серверов в разы, насколько я помню - memcpy очень дорогой, очень
Nikolay
синхронный от асинхронного отличается только тем кто опрашивает набор сокетов о наличии в них данных, об ошибках и тд и тп - либо пользовательский код либо ядро. коротко в общих чертах это именно так, а в остальном работа с сокетом ничем не отличается от синхронного варианта или варианта через select
Daniel
а не понимаете вы того, что в современном мире получение данных из сокета может - и должно - обходиться без этого самого memcpy
Daniel
это правда
Nikolay
Daniel
это рома прав
Daniel
только не memcpy оно делает, а mmap
Nikolay
чем мой ответ отличается от этого?
Nikolay
epoll/kqueue/iocp? не вкурсе только о kqueue. кроме обвязки (в сравнении с простой реализацией) все тоже самое чтение, что я описал выше - в recv отправляется указатель на буфер и длина и ядро в пользовательский буфер пишет данные из буфера сокета и возвращает кол-во записанных
Nikolay
на самом деле не так ) пользователь предоставляет ядру буфер, в который ядро делает memcpy :)
Roman
Nikolay
угу там про AF_PACKET
Nikolay
про пачку буфферов я вариант предложил выше, через Sync.pool например
Daniel
но не для сети
Nikolay
но тут эксперты говорят я не понимаю ничего в сокетах
Daniel
сетевой буфер можно без единой аллокации, кроме первичной, протащить от входа до выхода
Daniel
по дороге прямо в нем поменяв соответсвующие поля
Roman
но не для сети
увы, для сети тоже. я вчера как раз развлекался с recvmmsg/sendmmsg
Daniel
ну, хорошо
Daniel
я вот вчера с ними не развлекался, поэтому спорить не буду
Daniel
когда я развлекался с ними в последний раз - лишних аллокаций в java nio не было
Roman
вообщем, там в топе copy_user_enhanced_fast_string
Roman
0,46 │ mov %edx,%ecx
97,27 │ rep movsb %ds:(%rsi),%es:(%rdi)
0,08 │ xor %eax,%eax
Roman
и вот как-то так она выглядит в профайлере
Nikolay
:)
Roman
Nikolay
да у меня тоже это был сарказм)
Roman
вообщем-то у проблем у Михаила Монашева немного
Daniel
да рази ж дело в михаиле?..
Roman
1) в go нет sendmmsg/recvmmsg
Daniel
зёпа
Roman
2) в go нет какого-либо api чтобы переиспользовать буфер
Roman
вообщем-то, всё это решаемо
Roman
написанием своих велосипедов )
Nikolay
Nikolay
он за какого вендора был? надо понять кто победил все же
админ, прости
Roman
какой буфер имеется ввиду?
да, ступил. вообщем, нужен пул буферов, куда пакетики сваливаться будут с api вроде get()/release()
Roman
Nikolay
Мерль
Мерль
[last news]
Top Most Imported Golang Packages
Встреча завтра в Новосибирске стартует в 11? И с какой стороны там вход?
Anton
Всем добрый день!
Скажите, пожалуйста, имеет ли смысл читать какие-то книги по Go, или их нет нормальных?
Если есть, то подскажите, какие вы советуете прочесть?
Спасибо!
серёжа
Дочитываю Кернигана, брат жив
分解物質
Anonymous
Книги по Go не читал, брат тоже жив.
Мерль
Anton
Благодарю)
Мерль
Мерль
Alexander
нетворк программинг – это не та книжка где куча косяков в коде?
Alexander
или она хорошая?
Alexander
наверное перепутал с чем-то
Alexander
но 2012!
Roman
Да, но Updated 14 days ago
Alexander
хм, а где там хистори посмотреть :)
Alexander
https://www.gitbook.com/book/jannewmarch/network-programming-with-go-golang-/discussions/3
Roman
Утро, книжек не читал, брат девопс
Kirill
https://github.com/pzduniak/sleepsort
Dmitry
Читал спецификацию Go, 50 оттенков Go, и немного Effective Go. Чего и вам советую, особенно первое.
Roman
Так я на полном серьезе и он тоже пишет на го
One
серёжа
Alexander
Network programming где-то сильно ругали за то, что небезопасные вещи пишет. Деталей не помню, но осадочек, как говорится, остался
Bald
А есть простой template engine или встроенный норм?
Robert
Pongo2 возьми
Mikhail
для простых вещей вполне хватает, имхо.
Mikhail
а так да, понго или мусташ есть