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

А о каких программах на го речь-то? Просто на го

обычно пишут всякие сетевые штуки - и упарываться в оптимизацию гошного кода обычно даже смысла не имеет, т.к. всё сжирают сетевые издержки и запросы к БД

29 ответов

5 просмотров

о цпу-баунд, очевидно. Можно, конечно, быстрее ждать данные

Сетевой код очень разный бывает.

Например, dns-серверу совсем не нужна бд, но надо уметь очень быстро посылать/отправлять/формировать пакетики. Или вот подумайте про реализацию quic на go, где из/в стека udp-пакеты, а вся машинерия происходит уже в гошном коде.

Roman Timofeev
Например, dns-серверу совсем не нужна бд, но надо ...

кстати, а в нет/хттп своя реализация квика?

Dmitriy-Sviridov Автор вопроса
Павло Побуджувач
кстати, а в нет/хттп своя реализация квика?

Да, как и просто http2, который получился с "особенностями"

Roman Timofeev
Да, как и просто http2, который получился с "особе...

ну хттп2 то неинтересно, он использует тот же низлежащий транспорт. А какие у него особенности?

Roman Timofeev
Например, dns-серверу совсем не нужна бд, но надо ...

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

Павло Побуджувач
кстати, а в нет/хттп своя реализация квика?

И других вариантов особо нет. Потому что либо тягать жирные куски asm, либо cgo.

Roman Timofeev
И других вариантов особо нет. Потому что либо тяга...

ну с cgo есть шанс, что накладные на его использование превысят выигрыш

Павло Побуджувач
ну хттп2 то неинтересно, он использует тот же низл...

Стримы поверх одного соединения. Что в конкурентной среде приводил к локам(сокет то один и потому нужна синхронизация). В golang-nuts приходили с жалобами что http2 в разы медленнее чем http1.1

Roman Timofeev
Стримы поверх одного соединения. Что в конкурентно...

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

Roman Timofeev
Стримы поверх одного соединения. Что в конкурентно...

но любая thread-safe реализация в лоб будет медленнее, как мы понимаем

Павло Побуджувач
ну то, что стримы поверх одного соединения, то оно...

В каком-нибудь языке с async/await ты точно знаешь что у тебя не отберут управление в неожиданных местах и ты не проснёшься на другом треде. Потому там не надо лочиться.

Roman Timofeev
https://t.me/gogolang/860858

это ровно то, что я сказал, что лько другими словами 🙂

Не в tls дело. Фрейминг в http2 идёт до tls(если смотреть сверху вниз). Проблема в том, что мы можем писать в стримы из разных горутин(и вот тут нужна синхронизация). А потом уже идёт tls и после кормится в сокет.

Daniel Podolsky
есть у меня подозрение, что упремся мы не в произв...

wireguard-go с udp выжимает 6-7гбит, ядерный wireguard упирается в 3гбит

Stanislav Ovsiannikov
wireguard-go с udp выжимает 6-7гбит, ядерный wireg...

Это интересно, кстати Ядерный просто однопоточный?

Stanislav Ovsiannikov
wireguard-go с udp выжимает 6-7гбит, ядерный wireg...

И это хороший пример что перенос кода в ядро не обязательно даёт ускорение :)

Daniel Podolsky
Это интересно, кстати Ядерный просто однопоточный...

там нет некоторых оптимизации вроде tso/gro, а проблема передачи большого количества пакетов решается recvmmsg/sendmmsg они в го поддерживаются, или uring, он пока не сильно удобно поддерживается https://tailscale.com/blog/throughput-improvements/

Stanislav Ovsiannikov
там нет некоторых оптимизации вроде tso/gro, а про...

Ну по факту, там очевидное: 1. процессить надо пачками 2. отправлять/получать - пачками

Roman Timofeev
И gso/gro. tso - это про tcp :)

tso тоже важен, позволяет внутри тунеля выкрутить MSS в большие значения, и пересегментировать только на выходе в WAN

Stanislav Ovsiannikov
tso тоже важен, позволяет внутри тунеля выкрутить ...

Эээ... Там вроде иначе. В tun пишется/читается жирный кусок внутри которого пачка пакетов(+спец. заголовок на каждый пакет). Через флажки такой режим включается и это позволяет за 1 сисколл отправить/получить много пакетов. Оптимизацию изначально делали для kvm.

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
13
Карта сайта