~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
AreEnn
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
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
и транках