IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/02/28
~R4SAS
~villain
@onon
&N00B
+Most2
+Xeha
+acetone
+r00tobo
+relaybot
+whothefuckami
AreEnn
KabaOS
Nausicaa
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
orignal
poriori
profetikla
segfault
soos
tolik
un
weko [21:41:48] <orignal> weko а как у у тебя было в тестовой сети?
weko Я разный буфер смотрел
Vort я получил дополнительную информацию по поводу проблемы с тормозящими пингами локалхост туннелей на фоне раздачи торрентов
Vort для её воспроизведения не обязателен торрент и не обязательна нагрузка именно на UDP. достаточно iperf3 -c запроса на какой-то внешний сервер
Vort в результате добавления отладочного вывода к i2pd я обнаружил, что пакеты по локалхосту передаются довольно быстро, даже на фоне нагрузки внешней сети
Vort однако i2pd по какой-то причине при внешней нагрузке начинает тормозить с ответами на локалхост запросы
Vort вот я подготовил вырезки из логов. по ссылке данные двух пингов - при параллельной нагрузке iperf3 и без неё:
tetrimer Общая очередь на обработку?
Vort tetrimer: это были только запущенные узлы. у них нагрузки было минимум. там нечего было полсекунды обрабатывать
Vort проблема, похоже, оказалась "с краю":
Vort тормоза добавляются где-то между SSU2Server::HandleReceivedFrom и SSU2Server::ProcessNextPacket
orignal Vort эти тормоза называются очередью между тредами )))
Vort orignal: тред может быть занят какой-то фигнёй и ждать долгое время, мешая обрабатывать пакеты
Vort реальной нагрузки у него быть не могло
Vort бага вылазит сразу же после запуска узлов, когда у них ещё почти нету транзита
Vort ну и потом тоже, понятное дело
onon1 Может там какая работа с диском?
Vort это первая моя мысль
orignal он не был занят он просто не получал процессор
Vort вторая - что где-то опять какой-то flush забыт
Vort orignal: крайне маловерятно. полсекунды блин. иногда дольше
orignal да но машина то у тебя была занята
orignal если проц полностью забит то запросто
orignal насчет flush да погсмотрю
Vort не полностью. говорю же - 50% где-то свободно
orignal возможно
Vort придурошная нагрузка от Tor, кстати, ядро процессора не упирает - она размазана по всем ядрам
Vort проще сейчас скрин загрузки CPU сделать :)
Vort orignal: вот так у меня круглые сутки: paste.i2pd.xyz/?0937b42a3d02ddd9#7wEBpP9HE4WUkY8wssnGSgh2mhc4TYwSeaeW3WAeAXd5
orignal тут дело не в ядре
orignal планироващик работает много сложнее
orignal Transit Tunnels: 64452
orignal блять
Vort Transit Tunnels: 54153
Vort ага
onon1 И вправду, я думал всё уже
orignal упертые дятлы я смортрю
orignal Transit Tunnels: 71706
onon Давай, может, всё таки подумай над идеей не учитывать пустые туннели в лимитах...
orignal я как раз с дедом об этом час говорю
onon Насколько сложнее будет атакующему создавать туннели, и отправлять в них по 1 пакету, чем просто генерить пустые?
orignal ему придется держать весь пакет ключей тогда
orignal и прогонять 1K через них каждый раз
Vort а я пока что уточнил место тормозов: между "GetService().post(std::bind(&SSU2Server::HandleReceivedPacket, this, packet));" и, собственно, "SSU2Server::HandleReceivedPacket"
Vort теперь надо смотреть что блокирует поток
Vort я там видел какие-то мьютексы
orignal ты все верно нашел
orignal там вместо очереди поток запросов на io_service
orignal и на каждлый запрос очередь
orignal *мьютекс
orignal надо переделать
orignal на самом деле по уму там должна быть выборка пакетов из буфера
orignal сразу много одним post
Vort я пока что не пойму, какой именно код может тупить по несколько секунд
Vort то есть вот где-то тупо стоит ожидание
orignal почему ты не думаешь что код просто не вызывается?
onon1 Лось, там дед раздаёт рисёрч по итупи, пишет что в личку скинет, я у мего попросил, что-то не отвечает, можешь попросить, что бы скинул, мне интересно.
orignal нет в том месте нет никаокго ожидания
Vort мьютексы мьютексами, но они же накрывают какой-то код, который должен тупить
onon1 Скажи ему что я свой.
Vort если код под мьютексом тупить не будет, то и мьютекс не будет
onon О все, скинул
orignal как ему скинут спрошу
orignal Vort еще раз если код не тупит а просто не испоняется
Vort "<~orignal> почему ты не думаешь что код просто не вызывается?" я хз как буст работает, но если ему сказали перекинуть в другой тред, но не вижу причин этого не сделать, кроме как если тот тред чем-то занят
orignal мьютексы же просто вставляеют в список задач и убирают
orignal он не так делает
orignal он ставит в список задач
Vort а другой тред выгребает, да?
orignal а вот список задач может тупо расти и тот тред который их выполняет не справяется
orignal другой тред их исполняет
Vort так вот в том и суть - он может не справляться только если будет ждать. внутри задачи я имею в виду!
Vort то есть, в тред попадает какая-то задача с ожиданием внутри и всё встаёт
orignal так на тот тред который стаялет это не оказывает влияеия
orignal естественно
orignal но таких задач быть не должно
orignal в этом треде все асихроннок
Vort вот. значит, надо все задачи проверять
Vort можно вообще для каждой задачи в лог писать время начала и время конца
orignal да нету ттам ожиданий
Vort я видел ) но хз насколько это большое ожидание
orignal этот тред обрабатывает весь трафик
Vort тем важнее починить
orignal я думаю там просто очередь из заданий вырастает
orignal что починить?
Vort ожидание внутри треда. ну для начала это надо доказать )
orignal а если там нет ожидания?
Vort я сейчас покажу, что я находил. только когда найду ещё раз
orignal а просто не справляется
Vort orignal: значит, будет доказательство, что нету ожидания :)
orignal ну иши ))
Vort говорю же - узлы были без нагрузки
Vort ага
orignal мысль появлась
orignal мне про это давно R4SAS говорил
orignal что под виндой UDP send не мгновенный
Vort да я сейчас, наверно, все задачи из треда буду оборачивать логами
orignal думаю проблема там
orignal и потому именно у тебя что винда
orignal и потому нет ее с NTCP2
orignal потому что там async_send
Vort даже если это и так, нужны пруфы. наугад чинить такую гадость нельзя - если "убежит", будет плохо
Vort таймеры тоже в этом треде обрабатываются что ли?
Vort m_TerminationTimer, m_CleanupTimer, ...
orignal все что на io_service этом
Vort ок, пихаю логи дальше
Vort всё что GetService ().post я проверил. там тормозов не нашёл
Vort теперь таймеры буду проверять
Anonymous orignal: why do you use 8 spaces for indentation?
Vort tabs are not spaces
Anonymous If you were to use just 2, that'd mean 4x more characters can fit, and is more readable than >79c
Anonymous Vort: they consist of spaces
Anonymous I guess you can just change it
Vort and you can tune your IDE/editor to use whatever amount of spaces you want for them
Anonymous ohnevermind
Anonymous In Vi it's OK
Anonymous Less is stupid
Anonymous less -x2
Anonymous sorry lol I'm stupid
Anonymous tabs are awesome
Vort orignal: ну вот. SSU2Server::HandleResendTimer finished, duration = 306
Vort это миллисекунды
Vort то есть, треть секунды в таймере просидели
Vort всё остальное ждёт
orignal ну это пачку выкинули
orignal а что в этом не так?
orignal идея вообще заключается в том что все операции с SSU2 делаются в одном треде кроме получения пакетов
orignal что дает право не ставить мьютексы
Vort "<~orignal> а что в этом не так?" - то, что 306мс на такую задачу - это очень дохрена
orignal сколько там сессиий?
Vort сотня
orignal да что то многовато
orignal моя гиптореза насчет send имеет под собой основания
Vort где-то тред засыпает внутри этой функции
Vort ну вот надо понять, где именно теперь
orignal там только на send может
orignal но тогда я скажу что винда это все таки мастдай
` А я гаварил, что венда торт
` А линух для мальчикофф
` Пересел на венду - лишился девственности. Как ещё пруфы?
` )00
` weko, вот так вот.
weko Чего
weko #tRU
Vort вообще-то в комментах функции написано This function is used to send a datagram to the specified remote endpoint. The function call will block until the data has been sent successfully or an error occurs.
Vort но я всё равно буду проверять
onon1 Так надо не ждать, а ехать дальше
onon1 А отправил, не отправил - потом разберёмся
orignal вообще то для UDP она должна заврещшаться мгоновенно
orignal под юниксом всегда так
orignal отправлять асинхронного датараммы это моветон
Vort так надо разбираться, почему она тупит. только вначале перепроверю
orignal не ну если это так то это просто ебануться
onon1 Что, и ноут свой выкинешь со злости?
Vort я кстати проверял вообще другой программой - делал локалхостовые UDP пинги во время такой же нагрузки - никаких проблем не было
Vort так что нормально сделать можно. только покопаться надо
orignal нет придется #ifdef WIN32 вызывать асинхронно
Vort надо погуглить про эту проблему
orignal да нет асихронный send сделать можно конечер
onon А потом ловить новые баги...
orignal но это ж глупость
Vort не ну если функция синхронная, то ждать от неё мгновенного выполнения только потому что так в линуксе - это тоже не совсем ок
orignal ну понимаешь тут какое дело
orignal я i2pd писал как умел и только под лиункс
orignal винда появилась позднее
weko объясните кратко в чём дело
weko что меня аж кавычка пинганул тут
onon Говорят винда - говно...
weko да вроде и так понятно
onon Вызов функции отправки пакетов завешивает весь тред, пока ядро не ответит
onon А отвечает оно ой как не сразу
onon Кстати, майор работает.
weko да, я написал ацетону, он починил
onon Слава Ацетону
orignal weko суть что UDP send под виндой подвисает
weko acetone тебя тут все ждут))
Vort orignal: onon: weko: может это и не send_to виноват
orignal а он еще живуой?
weko orignal: да
orignal Vort а там больше ничего нету
weko однако не активен у нас тут
orignal вот же ж ... девопс
Vort SSU2Server::Send _не_ висит...
orignal а что же тогда?
Vort а вот надо искать, что
orignal так может они суммарно дают
orignal каждый по отдельности меньше миллисекунды
Vort 0мс+1мс
orignal по хорошему надо микросекунды бы замерять
Vort в [] таймстампы миллисекундные
Vort [334742026] LOCATION 13 | SSU2Server::HandleResendTimer started
Vort [334742262] LOCATION 0 | SSU2Server::Send started
Vort что-то сожрало 236 мс ещё до вызова send`а
Vort я наверно туплю
Vort там же два Send`а
Vort а я поставил вывод только в один из них
Vort сейчас и во второй воткну
onon Давайте сделаем бан роутера при сильном превышении "нормальной нагрузки", нормальную нагрузку будем определять как среднюю по остальным роутерам...
orignal там же просто итератор
Vort говорю же - не везде поставил вывод. исправляю
weko атаки продолжаются?
Vort пока я исправляю своё логирование, погуглил про UDP в винду и кое что вспомнил
Vort в винде*
orignal weko ну вот сегодня у меня 78K тоннелей было
weko пиздец
onon1 А уменя позавчера 230к
weko джависты что думают?
Vort orignal: насколько я понимаю, в винде можно сделать неблокирующие сокеты. они не будут асинхронными - но будут плевать ошибку в тех случаях, когда блокирующий должен заблокироваться
Vort короч я на 99% уверен что именно это и надо сделать
Vort перевести сокет в неблокирующий режим
orignal так везде можно
Vort ну и всё. будет как в линуксе
orignal они в asio и так неблокирующие
Vort тогда дальше копать надо
orignal onon1 ты че лимит в миллион поставил?))
onon1 Ну да
Vort я просто думаю, что они могут быть асинхронные, но блокирующие
orignal насколько я знаю asio вегда открывает как неблокирущий
acetone weko: orignal: что-то стряслось? почему все ждут?)
Vort 10-15мс. хе. тут секунды...
weko acetone: когда к нам вернёшься!
orignal не знаю
orignal что то все тебя спрашивают ))
onon1 Ацетон, спасибо, что починил майора сайт
onon1 Как без рук был.
acetone onon1: веко маякнул)
orignal Vort суть в том что проблема видимо есть
acetone orignal: славное было время на зоне, вспоминаю порой!)
acetone сидел по 16 часов в ирке
weko acetone: повысь лимит на роутерах
weko по туннелям
weko хы)
orignal ну да а теперь у тебя клеймо девопс ))
orignal acetone ага обновись до транка и повысь лимит транзитов до 100K
acetone weko: сейчас зайду на сервер, говори чего кого менять, я уже плохо помню
Vort так не только лимит важен. вообще обновлять надо узел
weko limits.transitunnels
acetone Vort: здравствуй! Раз в месяц-два захожу накатывать новую версию i2pd на сервере
orignal но в страх только 64K
acetone благо, р4сас еще собирает под Debian 10!
weko 65535 поставь если не последний коммит у тебя
weko всё равно хватать не будет но лучше так
acetone weko: сделал
weko ну и вебконсоли чтобы не рестартать
orignal слушайте так может это как раз onon1 и забивает сеть тоннелями?))
orignal не ну там бы жеалтельно собрать чтобы баги пофиксить
onon Черт, меня спалилию
acetone weko: ага, дело говоришь. Роутер стоит 2.50.2, так что обновляться тоже не на что (из готового)
orignal из транка надо
orignal вот откуда такое количество тразитов в принципе
weko постепенно увеличивается количество
orignal мне кажется столько во всей сети нет
weko явно кто то вручную меняет
orignal и что то мне подсказывает кто ))
weko а мне что-то подсказывает, что мы знаем под какими никами заходил данный персонаж
acetone orignal: нашел у себя виртуалку с deb10 и достаточным кол-вом ресурсов для сборки. Собираю транк
orignal ага
relaybot 13mittwerkz: ого ацетон тут
weko acetone: ответь в лс пожалуйста
orignal могу собранный дать для 10
onon1 Ацетон, чтобы нормально работало, там нужно ещё изменения в коде сделать.
onon1 А так не будет нормально работать под нагрузкой.
relaybot 13mittwerkz: acetone почему ты так редко появляешься?
orignal работает же
relaybot 13mittwerkz: здесь
Vort таки подтверждаю, что это Send тупит: paste.i2pd.xyz/?d19cd4112b8d604b#F37FigSkziszgT75G34xetNo6FKuZ1zQkHRQ18ecG3LK
Vort теперь попробую понять, почему
acetone orignal: о, будет супер) у меня до сих пор не собрался еще
acetone как выйдет Debian 13, надо будет собраться с силами на обновление
orignal ты качать будешь долььше чем соерется
acetone orignal: все, собрался)
acetone тысячи чертей, собрал с дебагом. совсем все позабыл)
orignal ну а чем мешает дебаг?>
orignal у меня все с дебагом
orignal без дебага только если для собрки не хваатет памяти
Vort cpu больше жрать будет скорее всего
orignal столько же
acetone все, сейчас буду рестартоваться)
Vort такс. добавил socket.non_blocking (true); посмотрю, что из этого выйдет
onon А жабоводы под виндой какие функции дёргают?
onon Может у них такая же проблема?
Vort а там абстракции скорее всего
weko У жабоводов это делает джавамашина
Vort надо в саму java лезть чтобы понять
orignal дак это
orignal переделать на асихронные не проблема
Vort orignal: короч я думаю, надо переделывать SSU2 или на неблокирующие или на асинхронные
orignal так переделай для пробы
Vort и это же не просто вызовы поменять, надо иметь нормальную логику для ситуаций, когда система перегружена
Vort я переделал на non_blocking
Vort сейчас проверяю
orignal лучше на async_send
Vort чем лучше?
onon чем non_blocking, очевидно же
orignal тем что твой non_blocking будет кидать ошибку
Vort в общем, с non-blocking бага нету. ничего не залипает
Vort а вот как переделать на async - я пока что не знаю
orignal так ты проверь результат sendto
Vort ну я понимаю, что он _может_ кидать и иногда будет. но у меня пока что пинг просто стал нормальным и всё
Vort я не агитирую за non-blocking
Vort не против проверить и async
Vort просто ещё не разбирался с ним
orignal заменить на async_sendto
orignal но там надо буфер сохранять
Vort так коллбек же наверно надо?
Vort ну вот...
orignal коллбэк можно пустой
orignal давай я попробую поставить non_blocking
orignal разумеется через boost::asio
Vort так я уже ставил, уже проверил
Vort лучше скажи, что именно для async надо
Vort "<~orignal> но там надо буфер сохранять"
Vort вот это я хз как
orignal ты boost::asio испльзовал?
Vort да
Vort boost::asio::ip::udp::socket& SSU2Server::OpenSocket (const boost::asio::ip::udp::endpoint& localEndpoint)
Vort после socket.set_option (boost::asio::socket_base::send_buffer_size (SSU2_SOCKET_SEND_BUFFER_SIZE));
Vort socket.non_blocking (true);
Vort и всё
orignal отлично
orignal теперь все таки сделай проверку результата sendto
Vort надо и async протестировать
weko продолжаю тему python и i2p, я думаю что основная проблема будет не в ресурсах CPU, а RAM ... пока не знаю насколько.
orignal ксттаи есть же
orignal SSU2: Send exception
Vort ну да
Vort наверно поэтому у меня ничего и не сдохло
orignal а в логах нету?
Vort ну я debug логи не включал
Vort просто проверил, что пинги не тупят и всё
orignal там error будет
orignal предлагаю non_blocking под #ifdef win32 сделать
Vort не нашёл Send exception
Vort но это не значит, что его не будет
Vort кстати так просто на async перейти не получилось
orignal m_SocketV4.send_to (bufs, to, 0, ec);
Vort там 4 параметр не ошибка, а какой-то токен
orignal он тебе этот ec поставит
Vort так что даже не компилируется
orignal ну понятное длео
orignal главная проблема там буфера
orignal так что давай сделай с #ifdef и коммить
Vort знаю, что сделаю. возьму чистый код, воткну туда non_blocking и поставлю на основной узел
orignal хуже не станет в любом случае
Vort уж там то вылезет ошибка под нагрузкой
Vort если она вообще умеет это делать
orignal но для UDP слать асихронно бы не хотелось
Vort ну нормальный non-blocking - это тоже годится. надо делать перепосылки при ошибке
orignal для UDP то зачем?
Vort а вот такой половинчатый, что забиваем на ошибки - это хз
orignal перепосылки этот как раз надо асинхронно
orignal я считаю что для UDP правильно если мы забиваем на ошибки
Vort если мы знаем, что нифига не послалось, то не надо это обходными путями выяснять
orignal другое дело что если их много надо завершать сессию
orignal возможно
Vort но вполне вероятно что такой вариант случается раз в год
Vort а если ещё и буфер побольше поставить...
weko раз в год и палка стреляет ))
Vort сейчас она стреляет каждую минуту... )
weko я к тому, что всё равно нельзя оставлять
weko что бы там не было )
Vort если можно снизить шанс косяка в 100000 раз, то это вполне стоит сделать
Vort а идеальный вариант - это я всегда поддерживаю. но обычно он - в будущем
weko надо если есть баг его фиксить полностью
weko Vort: ну вот записать надо тогда
orignal давай PR короче
onon1 А можно пофиксить симптом, и в коде дабавить TODO =)
Vort orignal: так, может, и в линуксе бывают такие же зависания?
Vort чем в линуксе помешает non-blocking?
Vort по логике, если он и так не блокируется, то хуже не станет :)
orignal не будет ли жор проца
Vort потестировать стоит
weko проще проверить
Vort вот и я сейчас тестировать буду. перезагружаю узел
Vort пока что ексепшенов не вижу
Vort у меня подозрение, что blocking может вообще не использовать весь буфер
Vort то есть, тормоза, возможно, были из-за переполнения буфера размером в 1 пакет
orignal да вполне
orignal так что давай PR
Vort так надо линуксы проверить
Vort может и там лучше будет
Vort можно сделать PR для всех платформ, затем проверить линукс и если станет хуже - воткнуть ifdef
orignal да. давай так и сделаем
orignal вмержил
orignal счас проверим
weko так может лучше сначала провенрить а потом сливать?
Vort блин ) ну это же моя везучесть. полезли ексепшены )
Vort [28/Feb/2024:18:58:56 +0200]@172/error - SSU2: Send exception: Операция на незаблокированном сокете не может быть завершена немедленно to 217.155.203.186:54122
Vort но я всё равно продолжаю тест
Vort лог потом только чистить придётся
Vort узел, кстати, работает нормально
Vort NTCP2 ( 2367 ) SSU2 ( 2354 )
Vort так что вполне можно просто заткнуть ошибку пока что
onon1 А релиз скоро?
orignal надо деда спросить когда у них
onon1 Если время есть, лучше бы сделать обработчик, если нет, TODO =)
orignal weko ну откатим если что
orignal и что должен делать этот обработчик?
onon1 Перепосылоать
Vort пока что единственный побочный эффект - загаженный лог )
orignal пееросылать это значит асихронная отправка
orignal что медленно
Vort интересно, что ексепшены идут волнами
Vort вот сейчас 3 минуты нет ни одного
orignal завсит от загрузки твоей сети значит
Vort так я делал тест с iperf3, полностью канал упирал - не было ексепшенов
Vort сейчас забит процентов на 60 - иногда лезут
Vort скорее всего, дело в загрузке CPU
onon Что дольше, попытаться переотправить тот же пакет, или пересобрать его, пока другие отправляются?
Vort и, может, это можно вылечить большим буфером. надо будет и это проверять
orignal да проверь поставь в 1 мег
Vort 4 поставлю. уже ставил. и посмотрю, уменьшится ли количество ексепшенов
orignal работает под лиукнсом нормально
onon Под нагрузкой проверял?
orignal на той машине большая нагрука именно на SSU
Vort а вот это важно
Vort If no buffer space is available within the transport system to hold the data to be transmitted, sendto will block unless the socket has been placed in a nonblocking mode.
orignal то есть таки размер буфера
Vort вот сейчас на 4 мегах тестирую
Vort за 5 минут аптайма не вылезло. жду дальше
onon1 Я же говорил, ацетон нагрузку держать не будет.
orignal так это я отвалился
orignal а не он
Vort интересно. сейчас у меня на узле заметно больше Sent:, чем раньше
orignal ну логично
Vort допустим, Transit 1600 Recv 1800 Sent 2000
orignal потому что тред не тормозит
Vort а раньше так не было. получается, ssu2 у меня был конкретно поломан
orignal у меня всегда Sent было больше
Vort кстати, 40 минут аптайма - ни одного ексепшена. смотрю дальше
Vort это на 4 меговых буферах
orignal отлично
orignal но надо только начиная с O ставить
Vort можешь как-то узнать, при каких значениях буферов бывают креши?
Vort чтобы понимать, какие варианты доступны
orignal дело не крэшах
Vort ну... можно и в цикле ставить, как я предлагал, но всё же
orignal а в памяти
orignal ты ставишь когда по 4мега
orignal это +8 к потребляемой памяти
Vort так ты ж говорил что может ексепшен кинуть при установке большого буфера. или не может?
Vort надо оба фактора учесть
orignal так проверять
orignal там же можно код ошибки передавать
Vort про память согласен - вопрос в том, сколько не жалко
orignal ну если кто то ставит X значит ему не жалко
orignal а L наоброт жалко
Vort ну и надо понизить уровень лога для эксепшена "Операция на незаблокированном сокете не может быть завершена немедленно"
Vort он нужен, но не как error
Vort может, warn
Vort "<~orignal> но надо только начиная с O ставить" можно начать с такого варианта, а потом подкручивать значения при необходимости
orignal да можно просто info
Vort так сколько для X стоит ставить? 1,2,4 мега?
onon Через 5 лет будем чинить проблему больших задержек из-за переполнения буфера, никто и не вспомнит, зачем буфер увеличивали.
Vort это же UDP, тут переполнение не из-за перегрузки сети, как я понимаю
Vort а из-за тормозов внутри операционки
Vort короч я не думаю, что будет хуже, чем сейчас
orignal для X 4
orignal для L 128 K
orignal остальные промежутоные
onon1 Под нагрузкой сыпет ошибками на стандартном буфере
orignal мы на работе ставим буфера 4M но это только для мультикаста
Vort или просто по лимиту bandwidth. + защита от бешеных значений
Vort будет место на 1 секунду лага
Vort onon1: линукс? какой флаг/скорость?
onon1 XR (2167.23 KiB/s)
orignal Vort минимум 128K максимум 4M остальное пропроциальнально bandwidth
onon1 Debian
onon1 212992
Vort значит, когда не сыпало, то узел лагал. понятно
orignal ага давайте буфер поднимать
orignal вводим две контанты MIN и MIAX
Vort "минимум 128K максимум 4M остальное пропроциальнально bandwidth" хороший вариант
orignal все что P и выше 4M
orignal L всегда 128K
Vort подозреваю, что когда другие узлы заметят, что мой узел уже не глючит, то быстренько его в лимит упрут )
orignal так у меня все упелись
onon1 На 1703936 байтах ексепшены, вроде сыпать перестал. Но это пока не точно.
orignal это почти 2 мега
Vort onon1: стала ли на узел выше нагрузка с non-blocking + новым буфером, чем была до этого?
onon1 Пока различий не вижу
Vort у меня чуть выше трафик и чуть выше загрузка CPU. видимо, раньше перепосылки SSU2 лагали, "экономя" CPU
Vort ещё у меня до этого были "шипы" на графике коннектов. теперь нету. но это не точно
Vort кажется, что узел "мягче" работает. возможно, эффект confirmation bias )
onon1 Вот уже пол часа нету ошибок с буфером 1,7 продолжаю наблюдение.
Vort у меня полтора часа нету на буфере 4М
onon1 Я пытаюсь нащупать нижнее значение
onon1 На 16 метрах тоже ошибок нет.
onon1 Но опять же, нагрузка не максимальная.
Vort для максимальной нагрузки может понадобиться несколько дней аптайма и несколько пережитых волн атак
Vort я заметил, что другие узлы "прилипают" к моему, заметив, что он держит атаку
Vort опять же не точно
Vort наверно из-за долго висящих сессий
onon1 Я пока разницы на узлах "с" и "без" особо не вижу.
Vort речь о non+blocking + большой буфер?
onon1 Да
onon1 Может ещё разгонится, нужно больше времени. Через сутки более реальные результаты будут.
onon1 Может на линуксах этот эффект не столь значителен.
Vort а может и не в ОС дело. у меня же комп постоянно нагружен
Vort вот и лезут всякие баги
orignal ну так что рещили сколько ставим минимум?
Vort это вообще очень со многим софтом на моём компе так
onon Хм, попробую наверное собрать на слабой машинке.
orignal а я на P4
Vort orignal: да нормальный вариант 128к минимум
Vort совместим с нынешним состоянием )
Vort а для более скоростных узлов уже идут эксперименты )
orignal у меня есть лучше идея
orignal сделать параметр в конфиген
Vort вообще, мне кажется, что надо решить, какой мы позволяем максимальный лаг
Vort orignal: дефолтное значение _очень_ нужно
Vort а переопределить конфигом особо прошаренным юзерам - это можно
Vort дефолтное динамическое то есть
Vort в зависимости от буквы
orignal от bandwidth на самом деле
Vort ну да
Vort просто я к тому, что надо и дефолт и переопределение
orignal uint64_t GetBandwidthLimit () const { return m_BandwidthLimit; };
orignal даже функция есть
onon1 1703936 похоже мало для Х
orignal а сколько надо? таки 4M?
onon1 Может тогда заодно и TCP "разогнать"? Сделать опцию в конфиге, кто на отдельном сервере разворачивает, включит...
onon1 Я пока увеличил ещё в 2 раза до 3,4 пока тестирую.
orignal неее с TCP нельзя
orignal там же на каждую сессиб свой сокет
onon1 Почему?
orignal это много памяти надо
Vort с TCP 4 тыщи коннектов да 4 мегабайта - это будет 16 гигов RAM жрать. наверно )
Vort не проверял :D
orignal да и не надо там столько
Vort а вот те шипы коннектов, о которых я говорил и которых теперь нету: paste.i2pd.xyz/?a1f0021b984948ac#uRNm3t23Z1SdZpP4CLsZuyEdmw3eFizAy6CCdT8DwhP
Vort я и раньше замечал, как у меня из-за раздач торрентов отваливались SSU2 и они же видимо переходили в NTCP2 сразу же
Vort скорее всего, это и создавало шипы на графике
orignal я счас дегса озадачил
onon1 tcp_tw_reuse интересная опция...
orignal у нас бывали жалобы на задержки фида по мультикасту
orignal мы все валили на рыночные спайки
onon 3,4 тоже не хватает. Попробую 4
orignal старб сразу 16 не мучайся ))
onon1 на 16 пока не видел ошибок
onon Роутер настроил мне 52 входящих и 63 исходящих туннеля....
orignal в одном деситнейшине?
orignal ну я же вчера объяснял почему
onon Я просто думал их больше 16 не будет
orignal нельзя задать больше 16
orignal но если у тебя 16 то в какой то момент будет 32
orignal потому что перестраиваются
onon Когда туннель testFailed он перестраивается
onon А потом он возвращается в строй
orignal нет
onon У меня да
orignal он еще одного теста ждем
orignal если второй раз не зафелился то возвращается
onon Ну я заметил такую закономерность, может в коде оно не так.
onon А, тогда всё правильно, у меня они просто не фейлятся.
onon Поймал интересное исключение SSU2: Send exception: Invalid argument to 0.0.0.0:0
orignal а ну это старая проблема
orignal откуда оно берется пока не понтяно
onon Акакеры акакуют
orignal неее это где то проверка не стоит
orignal дед говорит у них буфер в 256K
onon Дед прав, проблема bufferbloat начала появляться, когда в свичи и хабы начали пихать буфер больше метра.
onon Но там были медленные процы...
onon А у нас, вроде, быстрые?
onon Или не всегда?
onon Я тут подумал, если у нас 3к активных коннектов, и они нам одновременно пришлют по 1КБ, получится 3 метра?
onon На 4 метрах также периодически высыпает ошибки
onon Не знаю, следствие ли это атаки туннелями
onon Количество туннелей растет, ошибки в лог сыплются.
onon Поднял до 5.
orignal мне кажется выше 1M поднимать не стоит