IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2022/12/04
~acetone
Most2
Nikat
Spirit90
segfault
weko_
Vort собрал 6589bdf, посмотрю на стабильность
Vort orignal: микробаг нашёл
Vort вот тут numFragments - uint8_t и выводится как символ
Vort смотрел всё время на пинги туннелей когда с майнкрафтом разбирался, пытался угадать, по какому из них данные идут
Vort только сейчас заметил, что для потока выводится RTT
Vort в шапке таблицы всё в кучу свалено, поэтому в глаза не бросалось
Vort но и тут расхождение - игра показывает 700мс, поток - 100мс
Vort вообще непонятно, откуда этот RTT берётся
Vort вот туннели, по которым данные идут
Vort ⇒ SMw5 ⇒ 3579022060:me ( 133ms ) established, 2602 KiB
Vort 889135088:me ⇒ p1Yb ⇒ ( 97ms ) established, 1760 KiB
Vort при этом RTT - 70
Vort в игре вообще 2000 сейчас
Vort уже RTT потока 40. надеюсь, в отрицательные значения не пойдёт? )
Vort раз заговорил о майнкрафте, то вот ещё один баг. бесит больше всего
Vort иногда с сервера выкидывает (дисконнект). иногда можно сразу перезайти и дальше играть
Vort но иногда перезаходы не удаются. можно 10 раз подряд получать "Timed out"
Vort в вебконсоли при этом копятся потоки с Received 0
Vort в логах - [04/Dec/2022:11:29:06 +0200]@664/error - Streaming: No packets have been received yet
Vort где баг - в i2p, в i2pd, в майнкрафте - не знаю
Vort но точно вижу, что это не простой глюк сети
Vort что-то именно переклинивает
orignal да согласен
orignal но как он вообще туда попадает
orignal это баг скорее всего что тоннели лагают
orignal не помнишь как мы это для винды чинили?
Vort orignal: кто куда попадает? я же много всего понаписывал. речь о Too many fragments ?
orignal <Vort> вот тут numFragments - uint8_t и выводится как символ
orignal откуда вообще берется более двух фрагментов
Vort а, ну этого я близко не знаю. для начала хотелось бы избавиться от кракозяблов в логе )
orignal сдалей каст к int
orignal и PR
orignal или я сам
orignal это просто опечатка в коде
orignal но меня больше волнует как вообще тут попадает
Vort "<~orignal> или я сам" - лучше так
Vort чуть глянул проблему по bind. мало чего в этом понимаю :/ зачем вообще i2pd передёргивает порт?
orignal чтобы пакеты шли с заданного порта а не с какого попало
orignal но суть в том что вот такая хрень как там описана она только на винде
orignal R4SAS уже как то чинил
Vort вот в этой строке проблема?
Vort наверно про bind и не пойму :/ надо мне получше с UDP как-то разобраться
orignal вот тут
Vort ну да, но два вызова там при запуске, а один - посреди работы, как у юзера в багрепорте
Vort всего три вызова OpenSocket вижу
Vort а, там он лог файл же приложил
Vort там надо бы разбираться из-за чего всё началось
Vort Failed to bind - это уже последствия
Vort "No connection could be made because the target machine actively refused it" - какой ещё refuse в UDP... ICMP ответ что ли с ошибкой?
orignal мне непонятны эти ошибки в его логе
Vort может, тоже повреждения памяти
orignal я тоже не понимаю как машина может дать отлуп по UDP
orignal он же по определению без подтвеждения
Vort а, кое что всопмнил. он же там пишет про антивирь
Vort может тот заблочил сокет как-то
Vort а дальше уже пошли глюки
orignal ну даже заболчил а как принципиально может вознинуть такая ошибка
orignal ну дропнет ядро пакет и все
orignal потому и нужен R4SAS ибо он с этим разбирался
Vort перехватить API вызов и вернуть какую-то хрень
orignal ну а в чем логика?
orignal надо посмотреть старый код SSU
orignal там вроде сокет закрывали принудильено и переоткрывали или что то в этом роде
Vort независимо от того, что вы придумаете, надо бы поискать, может в этом антивирусе можно добавить i2pd в исключения и если можно, посоветовать это юзеру
orignal возможно
R4SAS orignal: там пока что не ясно откуда вообще получается такое
R4SAS по описанию смахивает что SSU2 пытается отослать данные на 0.0.0.0
Vort там в логах написано, куда оно отправляло
Vort по адресу 192.210.213.193
Vort после этого i2pd попытался переоткрыть порт - и получил ошибку
R4SAS не факт что это относится к моменту вываливания
R4SAS я лог еще не смотрел
R4SAS чуть позже гляну
Vort по времени секунда в секунду совпадает
orignal R4SAS по описанию там он делает bind на 0.0.0.0. ну и что?
R4SAS нет, это попытка пререзапуска сокета
R4SAS а сокет из-за другого отваливается
R4SAS либо чего то прилетает кривое, либо отсылается не правильно
R4SAS почему ему конкретно эта ошибка прилетает разберемся
R4SAS но надо понять почему вообще отваливается
Vort может, всё-таки антивирус виноват?
Vort в таком случае чинить надо проблему не с учётом нормальной работы системы, а с учётом того, как в её работу вмешивается антивирус
` ОФФТОПИК
` Флибуста закрыли ш2з зеркало?
R4SAS с чего вдруг?
` Докладывают, что всё, в ш2з не работает и приходится через аутпрокси стучаться.
` И у меня ш2з ссылка не работает, .b32.i2p которая
R4SAS так мы уже не первую неделю говорим что у них сломалось
R4SAS читать надо внимательнее
` Видел это, но не починили разве?
R4SAS если кратко
` кстати как их там ещё не закрыли как "бота"
` "замусорились" мб
` (оффтоп офф)
Vort orignal: решил я таки глянуть, как RTT для потока считается
Vort вижу тут, что несколько значений RTT объединяются в одно
Vort но не могу пока что понять, какая всё же цель объединения
Vort минимум, среднее, максимум?
Vort что-то иное?
Vort на всякий случай поясняю причину, по которой я туда залез:
Vort когда для потока с реальным RTT 600мс вычисляется RTT 6мс, есть сомнения в том, что код, от этого значения зависящий, работает нормально
orignal я уже не помню
orignal там как то усредняется
orignal но это лет 10 назад было
Vort ну мне интересно, что _должно_ там быть
Vort а то, что там есть - ...
Vort как минимум, значение скатывается вниз
Vort при больших номерах пакетов
Vort и из этого минимума уже никак не выбраться
orignal возможно
orignal это по уму надо переделать
Vort я думал над скользящим средним
Vort но для начала надо понять, а что же там должно быть
Vort то есть, взять сырые RTT для какого-то потока, вывести на графике и поразмышлять над этим
orignal надо читать описания алгоритмов для TCP
orignal я туда воткунл то что в голову взбрело
orignal можно просто (m_RTT + rtt)/2 например
Vort просто и логично
Vort если ещё при этом ничего не сломается - вообще супер будет
orignal ты посмотри по истории измнений скорее всего так раньше и было
orignal но почему то я изменил
orignal видимо стабильность
orignal или еще что то
orignal моя логика была что вклад одного пакета должен быть незначительным
Vort оно родилось таким
orignal возможно
orignal я согласен что темой это надо заниматься
Vort вспоминаются с института ПИД регуляторы :D
Vort накрутить можно много чего
orignal просто как всгда времени нет
Vort но для начала надо уяснить цель
orignal работает более или менее и ладно
orignal златин как и то хитрые алгоритмы реализовывал
Vort да если бы не в 100 раз расхождение, то я бы и не заметил
Vort что-то слишком дофига выходит
orignal так не должно по уму
orignal и потом там же при переклбчении маршрута обнуляется
Vort может ещё таймеры что-то не то выдают. плюс скатывание к минимуму получается задница
orignal кстати у тебя расхождение может быть из-за очередей
Vort лаги типа?
orignal нет
orignal ты послаешь сообщение но оно не сразу отправляется
orignal а сидит в очереди потому что пропускная способность i2p ниже
orignal ждет когда до него окно дойдет
orignal а если у тебя перед ним в очереди уже сотни сообшений то вполне
Vort а когда sentPacket->sendTime ставится?
Vort при постановке в очередь или уже при отправке?
Vort хотя в любом случае так пинг бы вверх лез, а он лезет вниз
orignal при отправке
orignal короче попробуй сам поразбирайся
Vort да может и доберусь когда-то. всё-таки там внушительный кусок кода надо разбирать
Vort вот чётко по усреднению вижу что что-то не то
Vort а что там в это усреднение поступает - уже сложнее
Vort но можно даже усреднение вначале подправить, а потом выверять, что ему там на вход поступает
orignal а ты поменяй код просто туда пиши последнее значение
Vort если я сейчас просто (m_RTT + rtt)/2 воткну - ничего критически не сломается? особенно для других юзеров
Vort могу проверить
orignal нет
Vort тогда сейчас проверю :)
orignal смотри там еще такая штука есть как GarlicRoutingPath
orignal суть в том если идет поключение к одному и тому же адресу используется одинаковый RTT
orignal например загрузка картинок с веб страницы
Vort такс. по крайней мере чат работает
Vort был смешной rtt около 60. посмотрю что сейчас будет
Vort (у чата)
Vort я ж выходил, некоторые сообщения не дошли
orignal * Vort вышло (Quit: KVIrc 4.2.0 Equilibrium kvirc.net/)
orignal <orignal> смотри там еще такая штука есть как GarlicRoutingPath
orignal <orignal> суть в том если идет поключение к одному и тому же адресу используется одинаковый RTT
orignal * Vort (kvirc@twmxmfpnvg4hdirelxsu54c3dyc7o2soifykca2jnrp2oq2tt5tq.b32.i2p) был добавлен
Vort да я смотрел на единичные коннекты
Vort вот чат допустим. один поток
Vort или майнкрафт 1 поток
Vort сейчас для чата RTT скачет где-то 700-800мс. против сползшего значения в ~60 ранее
Vort посмотрю что в майне будет
Vort (сейчас тестирую m_RTT = (m_RTT + rtt) / 2; )
orignal вот давай посмотрим
Vort интересно. поначалу RTT было около 800-900. теперь сползло примерно до 500
Vort в самой же игре где-то 1700-2000 показывает
Vort но в игре тормозное определение пинга. надо подождать
Vort уже 1000 в игре
Vort и 300-400 RTT от i2pd
Vort вроде и 2000 показывает в игре, но играется нормально. побегаю ещё в мире, посмотрю на реальную отзывчивость
Shadow подскажите за лучший почтовый сервис в торе
Shadow были ли новости о сливе с их стороны?
orignal а зачем с этим на #dev?
orignal спрашивай на #ru
Shadow увидел актив и решил спросить
Vort 642 в игре и 561 RTT. первый раз так близко
orignal неплохо
Vort короч, я не могу быть объективен с этим тестом, но субъективно результат мне нравится
orignal можно поменять логику например делать это на каждом десятом
Shadow вы опытнее меня. подскажите насчёт вопроса
Shadow на ru игнорят
Vort если хочется больше гладкости, то можно крутить 0.5 и 0.5 к примеру до 0.8 и 0.2. ну это наугад почти говорю
orignal и здесь тебе никто не станет отвечать
orignal так понятное дело
orignal идея в том что делать как у меня счас
orignal а на каждом десятом а лучше 16 ом сообщении делать пополам
Vort по этим алгоритмам целая _наука_ есть - теория управления. интересно конечно. но я пока не углублялся особо. короч, тут не гадать надо, а выбирать подходящий метод
Shadow ладно, пойду читать хабр
orignal так я тебе говоорю тут целые алгоритмы написаны
orignal златин что то долго реализовывал
Vort это о каком коде речь? java i2p, какая-то ветка i2pd? я просто не в курсе
Vort мне просто не очень понравилась идея "можно делать вот так". ну а можно и не так. нужен же критерий для оценки правильности выбора
orignal для TCP вроде
orignal какие то алгоритмы там
Vort а сюда что - один в один с TCP подойдёт?
orignal у джавистов да там должно быть
orignal нет
orignal говорю же златин долго ковырялся с ним
orignal а мне лень ))
Vort вот я же и спрашивал, где эти результаты. если ответ - в java версии, то понятно
Vort можно портировать при желании
orignal да там
Vort или для вдохновения использовать
orignal и описание есть на geti2p.net
orignal можно если разберешься ))
orignal у меня просто времени на это нет
orignal вот у тебя возникла проблема может займусь
Vort я заметил неадекватные значения и заподозрил неладное
Vort а как чётко последствия измерить пока не знаю
Vort про описание понял, это хорошо
orignal просто раньше такой задачи не было
orignal скорости не позволяли
orignal но я поковыряюсь сам как будет время
Vort окей. майнкрафт играется нормально. как минимум, ухудшения не заметил
orignal неплохо
orignal короче понятно в чем на самом деле проблема
orignal при переключении тоннелей занчение RTT остаентся старым
orignal а это в корне неверно
Vort да я вот я тоже присвоений m_RTT особо много не видел
orignal скорее всего код с переключением был добавелн позднее
orignal а его надо обнулять но по умному
orignal надо его вес обнулять на самом деле
orignal я подумаю как правильно
orignal проблемы как раз из-за этого
Vort скорее, проблем несколько
Vort решение каждой понемного будет давать улучшение
orignal ну вот эта вполне кокретная
Vort сползание RTT вниз?
orignal неадекватного RTT
Vort если время от времени его сбрасывать, то понятно, что он на минмуме болтаться не будет
orignal так надо не время от времени а точно в момент переключения
Vort суть же в том, что его к этому минимуму тянет при больших seqn
Vort допустим, RTT стоит 6. ну и seqn где-то под тыщу
Vort пятёркой легко сбить в 5
orignal никак
Vort а до 7 даже 100 не дотянешь
orignal (6*1000 + 5)/1001
orignal что будет?
Vort 5.99 ~= 5
Vort оно же к int приводится
Vort точнее, целочисленно делится
orignal при малых значениях ты прав
Vort ну вот когда я играл прошлый раз в майн его на 6ти заклинило
Vort а было ли там 6 - это тоже ещё один оочень большой вопрос
orignal то есть надо округлять
Vort как минимум
orignal это другая проблема
orignal но ты прав да
orignal что там отбасывание а не округление и будет уменьшать
orignal std::round написать
orignal молодец что нашел
orignal m_RTT = std::round ((m_RTT*seqn + rtt)/(seqn + 1.0));
orignal попробуй вот так