IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/03/26
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
DUHOVKIN_
Guest7184
Most2
Nausicaa
Nikat
Ruskoye_911
Vort
Xeha
anon3
b3t4f4c3
daemon
fidoid
hypn--direct
hypn-direct-nb
karamba_i2p
monkey
nemiga
not_bob_afk
plap
poriori
profetikla
qend
segfault
soos
teeth
tensor
tetrimer_
trust
tux
uis
un
unlike
user
vade
whothefuckami_
Vort "<onon1> Ну, а если на том конце кто-то медленный" - уменьшать окно стрима
Vort "<weko> onon1: это в стримах отправка пучками" - это при полностью заполненном окне такое происходит что ли? откуда берутся пучки?
weko Да когда окно заполнено
weko Когда ACK приходит
Vort ack`и, вроде, идут с интервалом 1/10 от RTT
Vort пучки большими быть не должны. если я правильно понимаю
weko 1/10 окна получается тогда
Vort максимум - 128. то есть, около 12 пакетов в ACK`е в среднем при полном окне
Vort неужели это создаёт проблемы для SSU2 ?
weko Не ебу
weko Про ssu2 ничего не говорил и без понятие
Vort отправлять чётко по одному пакету - это какая-то дурость. при адекватном алгоритме отправки всегда будут небольшие всплески
Vort вопрос в том, какие всплески допустимы, а какие - нет
weko Ну не обязательно чётко по одному
weko Ну можно сделать что максимум 1/10 окна за раз
Vort допустим, SSU2 окно почему-то не справляется. допустим, не будем разбираться, почему. какой размер очереди нужен сверху, чтобы ему помочь?
Vort сейчас я сделал 2 секунды. допустим, это дохрена. можно попробовать сделать меньше - к примеру, 2 * RTT
Vort меня только беспокоит, что если криво вычислим RTT, то будут проблемы
Vort ну и минимум-максимум ограничение ещё добавить можно. допустим, от 100мс до тех же 2 сек
weko Не нужна никакая очередь вообще. Не поможет никакая
weko Хотя, по времени может и имеет смысл
weko А может и нет
weko Тут сложнее, но всё равно есть какой то размер
weko А значит всё равно будет дроп
Vort по-хорошему, надо чинить стримы, чтобы не отправляли больше, чем надо и SSU2, чтобы давал окно достаточного размера. но если это не починено - вопрос, что тогда
weko Ну надо чтобы стримы имели ту штуку которая нормально изучает допустимый размер окга
weko Забыл
weko Вроде onon говорил
weko Если это она
Vort короч, очередь - это запасной вариант, когда что-то пошло не так
Vort и вот надо сделать так, чтобы в таком случае очередь не вредила сильно
Vort сделал размер очереди зависящим от RTT:
Vort проверять надо хорошо, потому что я уже допускал ошибки в похожих местах (да и сейчас несколько сделал и уже выловил)
Vort с этим коммитом дропы (транзита) начинаются при лаге > 3 * RTT
Vort но на всякий случай сделал ещё плюс мин-макс лимиты 200..2000мс
Vort дропы своих пакетов начинаются при достижении половины этого значения: 1.5 * RTT
Vort RED пока что не делал, надо бы вначале динамический размер полноценно оттестировать
tetrimer Vort: собрал, запустил... Вроде живет и работает.
Vort хорошо, спасибо
tetrimer Навскидку - стримы с rtt=8000 - стали быстрее переходить в рабочее состояние или закрываться.
tetrimer МОжет и раньше было, но сейчас - как только появляются отличные от нуля значения в колонке Buf - стрим в следующий момент из статистики пропадает (закрывается).
tetrimer Некоторые такие стримы - доживают до следующего запроса статистики (3-5 сек).
tetrimer А, нет: есть долгоживущие заклинившие.
tetrimer 3780621586 [12]X 4uk....b32.i2p 2874 1675 1 0 188 8000 1 1
tetrimer 3780621586 [13]X 4uk....b32.i2p 3353 1675 1 0 188 8000 1 1
tetrimer Две минуты уже висит почти не меняясь.
tetrimer Пропал.
onon Вот скажи ворту, чтобы разбирался с такими вот зависшими стримами.
tetrimer Так я давно говорю, что надо их как-то более агрессивно сбрасывать по времени неактивности.
onon А то он не совсем понимает зачем нужно окно в стримах и предлагает странные вещи.
Vort "<onon> А то он не совсем понимает зачем нужно окно в стримах и предлагает странные вещи." 1. какие вещи? 2. какое отношение окно имеет к зависанию стримов?
Vort 3. так я этим и занимаюсь уже многие месяцы - гоняю баги
Vort tetrimer: судя по графикам, узел "666" очень необычно отреагировал на мой коммит
Vort возможно, коммит какую-то проблему создал, но, вероятнее, он какую-то проблему проявил
tetrimer Я пока наблюдаю.
tetrimer Стримы к локальным ресурсам - вроде как появляются и трафик идет.
tetrimer Client Tunnels: 84 Transit Tunnels: 0 - забанили?
tetrimer На полчаса - кто банит?
onon1 Vort, 1. разные странные вещи, я уже указывал какие. 2. Похоже, что никакого, поэтому и предлагаю.
tetrimer На третий раз забанили гораздо быстрее.
tetrimer То-ли вручную банят, то-ли работа какого-то умного алгоритма.
Vort onon: "разные странные вещи" - какая самая странная из них?
Vort "Похоже, что никакого, поэтому и предлагаю" - разбираться с проблемами надо, а не избегать их. по крайней мере, пока есть возможность
Vort tetrimer: мой коммит дал какой-то необычный эффект. на моём узле такого нету, так что нужна будет дополнительная информация
Vort tetrimer: можешь подсказать, много ли отметок [queue: на вкладке Transports в разделе SSU2 ?
Vort "Transit Tunnels: 0 - забанили?" - скорее всего, это упор в лимит. скорее всего, по трафику. почему это происходит - надо разбираться
Vort запущу сейчас у себя OfR узел - послежу за его поведением. но дополнительная информация по "666" всё равно желательна
onon1 Vort: onon: "разные странные вещи" - какая самая странная из них? - Та что бесконечный буфер не будет заполняться, если в него пихать много пакетов.
Vort не припоминаю такого. бесконечных буферов не было и нету. "конец" задаётся лимитами по времени
Vort про то, что не будет заполняться - я не мог говорить, иначе не было бы смысла ставить ограничение по времени
Vort что мог сказать - это то, что на моём узле заполнение очередей - явление очень редкое
Vort если есть цитата - могу попробовать вспомнить, что я тогда имел в виду
Vort ещё что мог сказать - это то, что если количество пакетов соответствует ширине канала, то да, заполнения очереди быть не должно. но в этом я не полностью уверен
Vort и это соответствует ситуации на моём узле. скорее всего, возможности отдельного канала превышаются редко
onon1 Про стоячие волны почитай. А сейчас нет очередей потому, что большинство узлов - медленные, со старым cc на стримах, как начнут обновляться - заметишь, но будет поздно.
Vort сейчас ресурсы сети забиты почти полностью. так что сильно скорость не прыгнет. может, раза в 2, не больше
Vort если контроль на стримах действительно реагирует на перегрузку, то больше существующих возможностей сети он не запросит
Vort но на всякий случай я всё же уменьшил размер очередей в 5-10 раз (в коммите ac9d92c6)
Vort для обычного значения RTT в 125мс размер буфера с этим коммитом будет на 400мс
tetrimer Vort: > много ли отметок [queue - Вообще ни одной нет, по крайней мере сейчас.
Vort tetrimer: повышенное количество сфейлившихся туннелей на графике подтверждается и в консоли?
Vort ну и 5 тыщ аж SSU2 сессий - тоже подтверждается?
tetrimer SSU сейчас было 4К с чем-то
tetrimer SSU2 ( 4977 )
Vort вот. это необычно
tetrimer Это же парсится вывод консоли через lynx.
Vort а с фейлами что - там failed или test failed ?
tetrimer Это в туннелях. Сейчас там 38
Vort failed или test failed ?
tetrimer 2351854770:me => m4~Q => m~80 => M9hl => ( 86ms ) failed, 6 KiB
tetrimer 1849615484:me => NMF2 => lCS5 => failed (exploratory), 1496 KiB
tetrimer 592235795:me => 4Xp7 => 6k59 => ngLo => failed, 5 KiB
Vort то есть, в основном, просто failed? без test failed?
tetrimer Мне казалось, что test failed в другом месте пишутся. Сейчас гляну
Vort они и там бывают
tetrimer Сейчас - не видно.
Vort я уже думаю, может мой код как-то не так собрался. слишком подозрительный эффект. но пока что надо разбираться с тем что есть (чтобы не упустить проблему/баг)
Vort tetrimer: какой уровень логирования у узла?
tetrimer Сейчас error. Могу переключить.
Vort поставь пожалуйста warn на минутку
tetrimer ПОставил
tetrimer 19:36:36@595/warn - SSU2: Unexpected message type 111 from 82.65.186.186:12379 of 135 bytes
tetrimer 19:36:36@595/warn - SSU2: Unexpected message type 186 from 23.128.248.24:7777 of 78 bytes
tetrimer Пошло куча вот таких сообщений
Vort надо будет проверить, много ли сыпет "SSU2: Outgoing messages queue to **** is semi-full" в лог
tetrimer Пока - ни одного нет.
Vort ну там вместо **** хеш (адрес) узла
tetrimer В исходниках - такого сообщения тоже нет.
tetrimer Может я чего-то не то скачал?
Vort проверь, пожалуйста, что находится на строчке 404 в SSU2Session.cpp
tetrimer 403 packet->payloadSize = CreateAckBlock (packet->payload, extraSize);
tetrimer 404 ackBlockSent = true;
tetrimer 405 if (packet->payloadSize + 12 < m_MaxPayloadSize)
tetrimer Точно не то.
Vort это какой-то не тот код
Vort вот что должно быть
Vort if (!msg || msg->IsExpired (ts) || msg->GetEnqueueTime() + m_MsgLocalExpirationTimeout < mts)
tetrimer Нда, не тот код стянул.
Vort ну, значит, это не из-за ошибки в моём коммите =)
tetrimer То-то у меня и не сходилось версии коммитов...
Vort ветка называется ssu2_lag
Vort там это единственный коммит
tetrimer Вроде нашел. Сейчас пересоберу
tetrimer Vort: Version: 2.46.1-448-gac9d92c6
tetrimer Похоже?
Vort ага, нормально, это я тег просто не перенёс
tetrimer 20:00:51@595/warn - SSU2: Outgoing messages queue size to KdxTiPkN7P1T3zv8QSRNw3hJmqLK71LKl5PEIYDg0m
tetrimer 8= exceeds 500
tetrimer Это?
tetrimer Или надо именно semi-full?
Vort это точно после перезапуска?
tetrimer Не факт, кстати.
tetrimer 20:06 запуск был. Значит это от предыдущей
tetrimer 20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 3, lag = 106, rtt = 22)
tetrimer 20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 4, lag = 214, rtt = 22)
tetrimer 20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 5, lag = 235, rtt = 22)
Vort если эти сообщения относительно редки, то всё в порядке
Vort у меня бывает минут по 10 нету ни одного
Vort похоже, "поджатие" очереди прошло успешно
tetrimer Ага, ну тогда подождем до завтра и посмотрим.
relaybot 13HDpgaupUF: hi