IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/02/04
~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest8889
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
anon3
b3t4f4c3
fidoid_
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
tensor
un
weko_
whothefuckami
Vort ещё одну странность нашёл
Vort вот такое стало появляться сразу после запуска после того как подключил ipv6
Vort [04/Feb/2023:01:24:48 +0200]@792/error - NTCP2: Accept ipv6 error Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения
Vort ipv6 коннекты работают нормально, но строка в логе всё равно подозрительная
orignal это что то виндовое
Vort может, связано с ygg ?
Vort на ipv4 ведь такого нету
orignal кстати может быть
Vort делать мне было нечего - решил проверить, прав ли я был про % 512. оказалось, почти прав. для unsigned int оптимизация работает, для просто int - нет: godbolt.org/z/fajKbKs19
orignal потому я всегда используют или >> или & явно
Vort такой код читать сложнее. зато совместимо с примитивными компиляторами )
Vort gcc интересно себя повёл: переделал для 1000 деление в два умножения. а для 512 отработал примерно так же, как и clang, то есть правильно: godbolt.org/z/bMMdvoe4Y
Vort проверил ещё icc и msvc - в общем, все современные компиляторы сообразили сделать and eax, 511
Vort msvs, правда, пришлось /O2 поставить
` #хачу1МБсек
` (нетранзит)
whothefuckami Да треды могут хоть на 1 отличаться Vort
whothefuckami spookyhash или xxhash используйте и не парьтесь
whothefuckami ну std::hash да
whothefuckami Есть перегрузки под стандартные типы
whothefuckami Вполне норма
weko [09:28:19] <`> #хачу1МБсек
weko Да тут хотя бы мегабит стабильный сделать))
hypn4 R4SAS, I talked with author of InviZible Pro which has 2 months alike uptimes on Android. He gave the following insights: github.com/PurpleI2P/i2pd-android/issues/50#issuecomment-1416689737
hypn4 2. Issue with Flutter and C++ exceptions github.com/flutter/flutter/issues/66575 seems to have been fixed so i2pd-flutter could probably be reanimated
hypn4 R4SAS, я заметил что у инвиз про остаётся только нотификация, активити отмирает, но тор и днскрипт качают чтото
Vort на предпоследнем коммите после 13 часов аптайма: Tunnel creation success rate: 41%
whothefuckami Правда? И не врёт?
orignal не ну счас сеть не так заргужена
orignal вполовину меньше чем было
Vort ага, тоже это заметил
Vort больше не вижу горбов на графике коннектов
orignal скорее всего просто атака ослоебаов прекратилась
Vort если неделю где-то так побудет, то, скорее, да
Vort потому что перерывы в перегрузках я раньше замечал
Vort где-то на полдня
orignal Vort с посдленим коммитом посмотри заргузку SSU2 треда
orignal на предмет той фанции CreateAckBlock
Vort да я же говорил, что там фиг пойми как её ловить :( я же ловил по "горбам" на CPU графике, а они только при жирных транзитах были видны. которых теперь нету (наверное)
Vort я то попробую...
orignal а ну понятно
orignal просто я занимаюсь оптимизацией
Vort что я видел - две разновидности нагрузки SSU2 треда. предполагаю, что это транзиты с чтением и транзиты с записью. но у меня нету достаточного понимания работы SSU2, чтобы быть в этом уверенным
` Vort, ни у кого нет)00
Vort так вот при одной из разновидности, нагрузки в CreateAckBlock вообще почти нету. а при другой - около 10-20% было
orignal ну главная это CreateAckBlock
orignal счас я стал лимитировать до 510 пакетов
Vort мне надо понять - если я не вижу нагрузки в CreateAckBlock - то это так хорошо функция оптимизирована или мне просто попалась другая разновидность нагрузки SSU2 потока )
Vort пока что пробую смотреть по GetQueuedCompletionStatus
orignal етественно когда нагрузка высокая и потери пакретов больгие
Vort нагрузка на CreateAckBlock идёт вместе с нагрузкой GetQueuedCompletionStatus
Vort и можно оптимизацию CreateAckBlock оценивать как отношение процентов CreateAckBlock к GetQueuedCompletionStatus
orignal правильно GetQueuedCompletionStatus это когда большой поток прет
orignal и мы перекидываем его на другой тред
orignal в целом да
Vort дело в том, что я корреляции с трафиком не видел
Vort что по поводу моей гипотезы, что различия от того, SSU2 часть транзита занимается чтением или записью?
orignal чтением и записи чего?
Vort мне кажется это самым вероятным вариантом, но как проверить пока что идей нету
Vort ну транзит с одного транспорта читает и в другой пишет, верно?
Vort вот я и думаю, что случаи (SSU2 отправка, NTCP2 приём) и (SSU2 приём, NTCP2 отправка) могут выглядеть по-разному
Vort ну и (SSU2 отправка, SSU2 приём)
orignal ну в целом так
orignal конечно по разному
orignal и еще от позиции в тоннеле зависит
orignal если у тебя конец тоннеля то может еще куча запросв быть
Vort кстати, я понял, как можно сделать тестирование более стабильным. просто проводить тесты на SSU2 only узле. но у меня же один узел, не хочется сильно вмешиваться в его работу
Vort ладно, попробую сейчас просто наугад половить
Vort я в перезапуск
orignal ну у меня есть чисто SSU2
Vort жаль, но придётся менять методику тестирования и переключаться на чисто SSU2. иначе я ничего не наловлю
orignal да пока не срочно
zzz ++Vort, good work on SSU2
Vort полчаса "прогревал" SSU2-only узел, а трафика транзитного так почти и не появилось
Vort Transit: 30.90 KiB/s
Vort с такой нагрузкой CreateAckBlock потребляет 0.08%. не 8, а именно 0.08. это явно следствие различающихся условий тестирования, а не оптимизации
Vort надо ждать жирного транзита
Vort кстати, это не первый мой SSU2-only тест. я уже так ловил "горбатую" нагрузку. нормально ловилась. так что тут внешние условия различаются (нет атаки?)
orignal у меня порядка 400 кб/c на SSU2
Vort было больше?
Vort у меня на 30 килобайтах/сек застряло. видимо, только какой-то служебный трафик идёт и всё
` *** смотрит на свой траффик и оценивает как "служебный", ыыы :'( ***
orignal ну где SSU2
orignal у меня там 4 и 6
Vort мне просто интересно, какой там трафик был, допустим, неделю назад
Vort мегабайты/сек ?
Vort по моему узлу: за 52 минуты 123 MiB транзита набралось
Vort среднее - 40 KiB/s
Vort `: у меня это получается в 100 раз меньше, чем обычно. подозрительно
Vort может, узлы почему-то до сих пор думают, что у меня открыт NTCP2
weko Ну не может а точно думают
Vort а сколько им надо времени, чтобы понять, что я его вырубил?
weko Хз))
weko Без понятия если честно
weko orignal: а почему 510 а не 512?
weko В два раза больше...
weko Окей)
orignal потому что 255
orignal а не 256
orignal 510 это ровно два диапазона
zzz 510 is fine
zzz it's actually 511 because ackThrough is one more
zzz java i2p is variable 384-512 because we "shift" by 128 at a time
` 255 потому что 0?
zzz so you're still more than java most of the time
orignal thanks, will change to 511
orignal as we discussed yesterday
zzz well, but then you'd have ack 255 nack 0 ack 255 nack 0 ack 1 nack 0
zzz so 510 probably better :)
orignal my point was is I have it contniously
zzz right
orignal acktrough + acnt and 1 range with zero nacks
orignal but yes it should be 511
orignal forgot about acktrough
zzz up to you, anything 384-512 should be fine
orignal 511 is better
weko `: да
weko whothefuckami: а ты уже сделал?
weko 15800 роутеров, давно такого не было
orignal Routers: 19700
Vort а трафик какой?
Vort weko:
weko Как обычно
Vort это сколько? мегабайты/сек ?
weko Vort: у меня были пики потребления ssu2, но не до 100 процентов
weko На старом коммите
weko Vort: 1
Vort у меня по-прежнему на SSU2-only около 30 килобайт/сек транзит. странно. неужели ещё какой-то баг
weko Vort: возможно тебя роутеры побанили
Vort за то, что NTCP2 отрубил?
weko Ну мб, хз
weko Это предположение
Vort ну в таком случае это на баг всё-равно похоже
Vort да я понимаю
orignal 15 Мбс
weko orignal: ёптить
Vort мегабит же
Vort 2 мегабайта то есть
orignal Vort у тебя SSU2-only на которому раньше был nTCP?
Vort orignal: да
orignal так к тебе долбаютися по NTCP2 и не могут
Vort было ntcp2+ssu2, стало только ssu2
orignal надо было другой сделать
weko Ну я говорю его роутеры побанили
Vort orignal: так они же должны когда-то новый router.info у меня скачать?
weko По хорошему должен быть бан каждого протокола отдельный
weko Vort: не у тебя
weko Не только у тебя
orignal не побаниои а отпрофилировали )))
weko orignal: ну я это и имею ввиду))
orignal Vort у многих в сети еще старый
Vort какой смысл тогда его обновлять, допустим, при перебоях с сетью, если 3 часа - это недостаточное время для реакции
orignal не все же флудфилы у которых через час протухает
orignal может и до 3-х суток сидать
orignal так вопрос то был почему у тебя мало транзита
weko orignal: потому что ntcp2 не доступен
weko И его банят
orignal у меня такая конфигуция постоянно так 500 килобайт стаблино
orignal причем упирается или в мое ограничение которое я поставил
weko orignal: надо бы сделать профилирование каждого протокола отдельнл
orignal weko потому что узлы думаю что у него есть NTCP и на этой освное выдирют его для тоннеля чтобы он был доступен соседяи
weko orignal: это тоже
orignal а тоннель не строится естественно ему ставят -
weko Но и профилировщик свою роль играет
orignal и профилировщики его начинают обходить стороной
weko Ну его пока RI не обновился уже успели профилироващики забанить
weko И теперь надо ждать
Vort "Ну его пока RI не обновился уже успели профилироващики забанить" вот мне кажется это не нормальным
weko Vort: полностью согласен
weko Хотя стоп
weko По другому не получиться сделать мне кажетмч
weko Хотя хз
weko Надо знать параметры многие
weko Чтобы оценить адекветно это или нет
Vort получается, возможность отключать типы транспортов в конфиге есть, но толку нету
weko Проблема в том что владелец не знает какой транспорт пытались использовать хопы
Vort если для нормальной работы надо полный сброс как бы делать
weko Vort: так подожди день два
weko Vort: router.keys обновить может быть?)
Vort да вот я хз как быть. наверно попробую подождать
weko это не полный сброс на самом деле
weko это просто обновление ключей, мало на что влиеяет
weko я вот к чему сказал
Vort сеть будет считать этот узел новым, а старый ушедшим из сети?
Vort как бы через задницу
Vort короче, я считаю что возможность поменять настройки узла без его удаления должна работать адекватно
Vort если это невозможно - странно. но ладно
weko нет это возможно
weko но не факт что адекватно
weko это специфика работы сети
weko можно подумать как сделать правильно
weko но это сначала придумать, а потом сделать
weko понимаешь тут ко всем проблемам можно приписать "об этом не думали"
weko и самое сложное это об этом подумать))
weko да ещё и так чтобы обратная совместимость была хотя бы на уровне "работает"
weko orignal: а тестить скорость просто забивая буфер на максимум нормально?
orignal это будет плохой тест
weko а как правильно знаешь?
orignal понимаешь ядро же тоже будет отптимизировать
orignal правильно чтобы было похоже не реальную нагрузку
weko ну это понятно
weko я не написал просто подробнее ещё
` R4SAS, у тебя радио сломалось тоже? Как и у ацетона.
orignal это не так просто
` R4SAS, не работает ссылка.
` ошибка сокета
orignal мы на работе например имитируем это путем конвертации реальных фидов
weko ну смотри я планирую брать случайный "файл" от 5 до 30 мб и в рандомное время смотреть скорость его загрузки
weko +- раз в два часа
weko например
orignal вот это и неправильно
weko вот и вопрос про то, нормально ли смотреть скорость загрузки "файла" забиванием буфера на максимум,
weko orignal: почему,
orignal ну хоть так
weko ну смотри скрость в основном нужна при скачке файлов
weko ну можно вообще и больше размер брать
weko orignal: почему не правильно? да, тест синтетический, но от реальности мало чем будет отличаться
orignal ну как знаешь
weko ты говоришь что неправильно
weko я хочу узнать почему)
orignal я тебе выше ответил
orignal что ядро себя будет вести иначе чем при реальной нагрузке
weko <~orignal> правильно чтобы было похоже не реальную нагрузку
weko так смотри программа когда хочет максимальную скорость забивает буфер?
weko верно?
orignal тогда ядро понимает эту ситуацию
weko а там уже ОС регулирует реальную скорость отправки в соответствии с возможностями
orignal и планировщик перестраивается
orignal так в реальной жизни буфер забивается не постоянно
weko но мы хотим узнать максимальную скорость
weko тоесть нам нужно забить буфер и данном случае ждать пока i2pd отправит
` р4сас вроде "игрался" с максимальной скоростью
weko ну и пополнять буфер снова
weko я вот хочу сделать 24/7 тестер
weko и например раз в неделю слать репорты сюда.
weko orignal: когда буфер не всегда заполнен это уже использование меньше чем максимальной скорости
orignal оно не так в реальности работает
orignal мне некогда счас объяснять почему
weko типо заполнение буфера, потом ожидание , потом снова заполнение?
orignal трафик он бывает рваный
orignal кроме того приложения же тоже видят что сокет занят и просиходит переключение на другой тред
orignal буфер освободился но он не заполнится тут же
orignal а когда тред получит управдение прапример
weko ну он почти сразу заполнится? с i2p точно таких проблем не должно быть. а если и есть, это уже проблема не i2p, а приложения
weko учитывая скорости i2p, конечно
weko если буфер часть времени не заполнен когда нужно использование максимума скорости это проблема программы
weko а не i2p
weko а скорость измеряется именно i2p
orignal я же тебе сказал попробуй
orignal но в i2p то дальше будут траспорты через которые идет поток
weko тут важно только какая скорость по итогу
weko другой вопрос из-за чего она не настолько высокая, как хочется
weko <~orignal> я же тебе сказал попробуй
weko ну если есть критика надо разбираться, причём заранее
Vort weko: не пойму вашего обсуждения
Vort чем "просто скачать файл" не реальная нагрузка?
weko ну у меня конкретно будут просто слаться нули в конкретном количестве))
weko а после смотреться за сколько они пришли)
weko ну и там обычное деление)
Vort можно и не нули. можно хоть один и тот же файл вообще
weko без разницы что
weko один и тот же не буду
weko буду случайное количество от 5 до 50 мб
Vort зачем случайное?
weko для моей шизы и чтобы было больше похоже на что-то реальное)
Vort ну скачать файл 20 мегабайт - это ведь реально? )
Vort добавлять шум в данные просто так - это странно
weko ну можно попробовать и то и то и посмотреть есть ли разница
Vort можно сделать, допустим, 3 теста - 1 мегабайт, 5 мегабайт, 20 мегабайт
weko ну можно так
Vort и посмотреть, будут ли отличия в измерениях
Vort угу, надо пробовать
Vort и если различий нету, то выбирать самый простой вариант
weko блин, ты меня вынуждаешь нормальный код к этому сразу написать))
Vort если различия есть, тогда думать. это уже посложнее )
Vort :))
Vort я думаю, что различия будут из-за того, что "окнам" нужно время на настройку
Vort с маленькими файлами окно только настроится, а уже и файл кончился
weko ну да, поэтому я и хотел сделать случайное
weko ну вот
weko это же может быть у юзера
Vort просто это разные тесты как бы будут
Vort тест на стабильную скорость - большой файл
weko да, тут я согласен
Vort тест на разгон (скорость увеличения скорости) - маленький файл
weko надо ещё тест на стабильность потока сделать
weko Vort: ускорение скрости))
weko надо ещё температуру скрости мерять)
Vort "надо ещё тест на стабильность потока сделать" да. один такой тест даёт хренову тучу полезных данных. но начинать стоит всё же с самого простого. и потом усложнять
weko согласен
weko хотя принципиально это не рокенсаинс
Vort ну вот я, к примеру, даже не представляю какими единицами измерения описывается нестабильность скорости
Vort наверно какое-то среднеквадратическое отклонение
Vort во влезешь - поймешь про саенс )
Vort вот*
Gate подскажите как сменить b32 отдельного клиентского тоннеля, не трогая остальные?
Vort файл ключеЙ, небось, поменять
weko Vort: нестабильность не скорости, а потока. например мы отсылаем пакет раз в 500 мс, как результат мы записываем среднее отклонение от этого тайминга
Gate Vort: удалить файл ключа и reload?
Vort weko: ну это пинг называется
Vort Gate: если во всех клиентский туннелях есть файлы ключей - то, скорее всего, да
Vort Gate: если где-то без ключей, то, думаю, там адреса поменяются
Gate Просто думал может еще какие способы есть
weko Vort: нееет не пинг
weko мы отсылаем предположим раз в 500 мс, а нам приходит сначала через 5 секунд а потом через 100 мс
weko именно что тест на затыки
Vort среднеквадратическое отклонение пинга, разве нет?
weko пинг это не совсем то
weko хотя его учитывать надо
weko точнее его изменение
Vort даже если и не то, всё равно очень близко
Vort нельзя сделать затык не испортив пинг :)
Vort точнее, его равномерность
weko вот пакеты 1 2 3
weko 1 500мс 2 500мс 3 - отправляем так
weko 1 700мс 2 200мс 3 - а приходит так
Vort в общем, я понял. это примерно то же самое
weko это другое
weko хотя пинг на это влияет
Vort и на показателе скорости такое тоже отразится
Vort если её не сильно сглаживать
weko вот например если у нас между пакетами который были отправлены через 500 мс прошло 5 секунд это не норма
Vort тут много всего связанного
weko Vort: так я буду заглаживать в данном случае
weko ну точнее в первом
weko именно с тестом скорости
weko Vort: ладно, я понял, это почти тоже самое что пинг
Vort можно вообще собирать сырые данные, а потом думать, что с ними делать :)
Vort что-то типа дампов pcapng
Vort ну я говорю о том, что такой глюк вылезет в виде неравномености скорости
weko просто нужно часто смотреть какой пинг
weko Vort: хорошое предложение
weko про сбор данных
weko но сделать сложнее будет пока что
Vort согласен
weko думаю начать нужно хотя бы с еженедельных репортов скорости
Vort можно для начала мерять скорость самым простым образом - просто по времени скачки файла
weko ну я так и буду
Vort а потом усложнять систему
weko за сколько передастся N байт, такая и скорость
Vort в зависимости от того, какие результаты выйдут у простого варианта
weko да)
Vort думаю, что стоит ещё не просто усреднять данные по куче экспериментов, а ещё делать графики. хотя бы вручную, для обдумывания
Vort чтобы понять, насколько данные экспериментов зашумлены
weko очень сильно, изначально понятно
Vort и из этого можно будет подобрать правильную частоту экспериментов
Vort ну это надо числом выразить :)
weko именно поэтму я и хочу сделать 24/7 тестилку
Vort сколько измерений в день нужно
weko Vort: от 1 килобит до 3 мбит))
weko Vort: ну я думаю 12 делать примерно
Vort я просто частоту экспериментов
Vort её надо настроить
Vort ну это начальное значение
weko можно и чаще конечно
weko потому что я буду делать каждый раз новые b32 через сам
Vort какая она должна быть станет понятно после первых результатов
Vort ещё интересный показатель, который можно сразу же собирать - TTFB. сколько времени прошло от момента отправки запроса до получения первого байта ответа
weko ну пинг тот же
weko Vort: ещё я буду делать тесты с разными параметрами и длинной тунелей
weko чтобы понимать влияет ли они вообще
weko ну и конечно самое важное будет смотреть на разных версиях
weko и транках