~R4SAS
~orignal
~villain
&N00B
+relaybot
Guest557
Leopold
Most2
Nausicaa
Nikat
Opax
WayBest
`
acetone
anon2
anontor
b3t4f4c3
banona
fidoid
grimreaper
karamba_i2p
ncop
onon
onon1
polistern
poriori
profetikla
qend
r00tobo
scratch
soos
teeth
tensor_
typhoon
uis
un
weko
whothefuckami
колдоёбина
Leopold
sudo -u <user<<<<<<<<<<<<<<<<<<<<<<<<<>
orignal
он имеет ввиду как в systemd прописать
weko
[23:18:59] <9d54b3orignal> у меня флудфил
weko
[23:19:17] <9d54b3orignal> и там нагрузка небольщая
weko
Я про атаку, если она есть
Leopold
Что означает в конфиге туннеля keys = transient-... ?
Leopold
вместо файла .dat
weko
Leopold: это значит что ключ создаётся при запуске/обновлении и хранится в памяти
weko
И не записывается на диск
Leopold
хорошо
weko
После тире чтобы разные ключи были для разных дестинейшенов
weko
Если будет одинаковое имя после тире то будет один ключ для этих дестинейшенов
weko
Точнее он будет один)
Vort
продолжил попытки словить жирные SSU2 туннели. попался сейчас один где-то на 1 мегабайт/сек
Vort
так вот результат получился совершенно отличный от тех тестов, которые я делал в прошлый раз
Vort
в частности, нагрузка CPU не "прыгала", а была довольно ровной
Vort
вижу две возможные причины:
Vort
1. после прошлого теста (30.12.2022) было много изменений в коде и прыгающая нагрузка с того времени была починена
Vort
2. SSU2 коннекты бывают разными (как минимум, различаются отправка и приём), вполне вероятно что от этого получается разный характер нагрузки
Vort
с сегодняшним тестом с помощью Sleepy, на коде от вчерашнего дня получается 95.7% нагрузки на функции WSASendTo
Vort
можно было бы предположить, что код i2pd менялся, но ведь и системный вызов GetQueuedCompletionStatus с последним тестом меньше жрёт: 0.5%
Vort
так что надо думать и следить дальше
Vort
ещё есть вариант, что Sleepy и VTune слишком по-разному работают, но это маловероятно
Vort
всё, словил "горбатую" нагрузку. и подтвердил результат месячной давности
Vort
в "горбатом" варианте WSASendTo уже 63%, GetQueuedCompletionStatus 11%, CreateAckBlock 22%
Vort
теперь соберу i2pd со свежими коммитами
Vort
что-то у меня подозрение, что ровная нагрузка SSU2 - это отправка, а горбатая - это чтение. смотря какой транзит попадётся
Vort
собрал данные по ещё одному SSU2 коннекту средней горбатости. уже со свежими коммитами. на этот раз получилось такое распределение: WSASendTo 66%, GetQueuedCompletionStatus 9%, CreateAckBlock 8%
Vort
так что по этим совершенно неточным данным получается ускорение CreateAckBlock в 2 раза
Vort
нужен какой-то более точный метод измерения
Gate
жара пошла 10 мб сек ))
Gate
Sent: 30.39 GiB (11444.88 KiB/s) это как вообще? Sent это что типа мне? Я вроде не качаю ничего
Gate
вернее не отдаю
Leopold
)))))
Leopold
Отдаёшь со скоростью 12 МиБ в сек ))
HidUserZ
Gate: ну так транзит же
Gate
HidUserZ: Transit: 29.21 GiB (1526.97 KiB/s) а это тогда что?)
HidUserZ
А send какой сейчас
Gate
HidUserZ: Sent: 32.82 GiB (1895.04 KiB/s)
HidUserZ
Ну все сходится более менее
Gate
транзи показывает что вошло, что вышло, или сумму? Запутался
Gate
судя по всему что-то одно, иначе трафик транзита был бы суммой из сент и ресив
relaybot
13R4SAS: это скорость пропущенного через тебя трафика
relaybot
13R4SAS: т.е. trans-in === trans-out
Gate
а received это транзит + то что ко мне?
relaybot
13R4SAS: да
relaybot
13R4SAS: так же и sent
Gate
ну да
weko
Gate: +всякие другие запросы типа netdb и прочее
orignal
нашел еще одну неэффетвинсть в SSU2
orignal
вычиащаю говно мамонта по одному сообдению а надо пачками
orignal
переделаю
Vort
эти изменения как-то профилированием проверяются или хватает теоретического заключения, что "так должно быть быстрее"?
weko
Должно быть - да. Насколько - вопрос уже другой
orignal
Vort я просто вижу что код сделан неправильно
orignal
иными словами его следует переделать безоносительно измерений
weko
Всё таки странные эти горбы процессорного времени SSU2. С 10-20 резко в сотню и обратно
orignal
weko это ретрансмсии
weko
Почему тогда так много в какой то момент
orignal
вчера же Vort показал в чем дело
weko
Минимум в 5 раз больше
orignal
когда много пропущенных пакетов накаптливается
orignal
тогда так функция и жрет проц как слон
orignal
я как раз это и чиню постепенно
weko
Оно же не на 1 секунду а на пару минут
orignal
начал с того чтобы это говно мамонта вычищшать более интенсивно
orignal
на переполчнение буфера значит
orignal
UDP
orignal
такое бывает
weko
Странно, софт медленнее сети это не типичная ситуация
orignal
нет
orignal
на твой машине есть UDP буфер
orignal
в котором могут теряться пакеты а могут теряться и по дорого
weko
Это понятно, ну так если он заполнен, значит программа не успевает забрать
orignal
когда они теряются то полученные не по порядку сохраняются
orignal
там до программы может и не доходить
orignal
как раз i2pd забирает быстро
orignal
там же много чего в ядре
weko
Тогда почему нагрузку пишет i2pd
orignal
читай выше
orignal
я же объяснил
weko
Ну не доходит до i2pd, значит нагрузка должна быть в ядре а не в i2pd?
orignal
из-за пропущеннызх пакетов формирование подтверждения жрет много проца
orignal
это надо переделывать
weko
Хс
weko
Хм
weko
Понял
weko
А там хэш таблица для них?
orignal
просто пока вчера Vort не сказал
orignal
до выяснения этой сиутации дело не доходидо
orignal
там не хэш там set
orignal
из решета номеров полученных пакетов
orignal
короче я это переделаю
orignal
но это пара дней
weko
Окей проблему я примерно понял, я не понял почему именно волны, а не распределённая нагрузка?
weko
Типо попадается коннект с большой потерей пакетов?
orignal
волны сам бы хотел знать что их порождает
orignal
ощущение что приходит одна мощгая сессия
orignal
с большим потоком
weko
Трафик в этот момент никак особо не выделяется
weko
Ни в морде, ни в статистике железки
R4SAS
while (ranges < 8 && !m_OutOfSequencePackets.empty () &&
R4SAS
8?
orignal
угу
orignal
8 попыток
orignal
я стаивл 32 но слишком большую нагрузку на проц создает
orignal
потом вынесу в константы
`
может быть по дэфолту "срать" в stdout? логами
`
а то вот эти вот "гигабайтные" ойауменясломалося
orignal
если не демон то так и делается
orignal
а где я тебе возбму stdout у демона?
`
принято, за демонами не шарю
orignal
так нету уже этой проблема начиная с 2.45
orignal
я же починили
orignal
у демона вообще нет stdout
orignal
как врочем и stdin
R4SAS
` а нехер подминать уровень логов без надобности
`
я просто вижу подэфолту в i2pd.conf логи в file и вот предложил
`
код не чекал
R4SAS
по дефолту файл только в демоне
orignal
так в демоне можеть быть только или в файл или в никуда
R4SAS
даже если в демоне сделать в stdout то будет засирать уже не i2pd.log а syslog
orignal
перелача по сетке не сделана
`
R4SAS, warn не излишне ли по-умолчанию..
R4SAS
нет
orignal
суть не важна куда
R4SAS
излишне было бы info
orignal
важно что все равно будет писать в какой то файл
orignal
ибо у демона нет терминала
R4SAS
я потому и добавлял уровень none
orignal
короче по поводу последних изменений
orignal
следующий шаг это вычислять диапазоны один раз и сохранять
orignal
и пока не изменились их просто копировать в аки
R4SAS
диапазоны чего
orignal
Ack бллка
orignal
диапазоны пропущенных пакетов
orignal
ну эта проблема с CreateAckBlock
R4SAS
понял
orignal
там постоянно делает итарицию по списку полученных вне очереди пакетов
orignal
технически это превращается в диапазоны в этом блоке
orignal
а если приходит пакет по порядку
orignal
то зачем диапазоны заново считать?
orignal
они же не изменятся
R4SAS
ну да
orignal
чем я и знаимаюсь
orignal
видишь какие проблемы лезут из-за нагрузки
weko
orignal: кстати проблема с уходом RI в 1 штуку осталась
weko
На флудфиле как минимум
orignal
ну надо разбираться
weko
Возможно они удалились все ещё до того как процент упал
orignal
возможно другая причина
Vort
weko: это когда такое происходит? при отключении интернета?
weko
Когда отлуп от ОС по любой причине
weko
Ну тоесть в том числе
Vort
ну так для этого и было (в частности) сделано EWMA усреднение TCSR
weko
Ну это понятно
Vort
с тугим алгоритмом TCSR не успеет упасть
weko
Я читать умею
weko
Значит нужно делать ещё менее тугим
weko
Чем сделали
Vort
"проблема с уходом RI в 1 штуку осталась" при стандартном TCSR алгоритме?
weko
Vort: всмысле стандартном?
weko
Тот что хидюзео сделал
weko
Логично
Vort
а, кажется, понял. я туплю
weko
Там и аптайм не был такой уж высокий
weko
Что то типо 2-3 часов
weko
Было бы странным менять на более "тугой" алгоритм для этой задачи
Vort
ошибся, говорю. подумал, что у тебя стоит старый алгоритм, который заклинивает со временем
weko
Нет я же сделал PR даже
weko
))
weko
Я понял да)
Vort
видимо, нужно делать временный код с логированием количества RI + TCSR, отрубать вручную сеть и смотреть потом по графикам, с какой скоростью будут уползать значения
Vort
может, там ещё какая-то проблема, а не недостаточная гибкость EWMA
weko
Ну да понятное дело
weko
Это просто предположение
weko
Заметил странность - в вебконсоли NTCP2 сортируется по алфавиту, а SSU2 - (видимо) по времени создания
weko
Не критично конечно но лучше сделать что-то одно)
Vort
поначалу смотрел на IP адреса )
Vort
потом догадался id глянуть
weko
))
Vort
интересно, что юзеру важнее
Vort
отсортированный id или отсортированный ip
Vort
или хоть что-то отсортированное )
weko
Не то не другое
weko
По времени создания)
weko
Как в ssu2
Vort
таблицу с javascript сортировкой :D
weko
Ужас
weko
Осуждаю)
Vort
так локалхост же доверенный :D
weko
Параноики не верят даже локалке! ;)
Vort
гляну сейчас как сортировка делается
Vort
std::map<i2p::data::IdentHash, std::shared_ptr<NTCP2Session> > m_NTCP2Sessions;
Vort
std::unordered_map<uint64_t, std::shared_ptr<SSU2Session> > m_Sessions;
orignal
ну жа
orignal
для NTCP2 сортированный
orignal
для SSU2 нет
Vort
unordered - это скорее не по дате, а как попало
orignal
ordered как полало да
Vort
юзеру всё же лучше показывать унифицированно. но это не приоритетная проблема, конечно
weko
Vort: я сразу написал что это я просто заметил)
orignal
да я NTCP2 лучше переделаю на unorders
Vort
думаю, хранение и отображение не обязаны работать по тем же правилам
weko
Vort: +
Vort
так что можно отдельно решить, как удобнее хранить и отдельно решить, как удобнее юзеру просматривать
weko
Можно сортировать для вебконсоли
weko
Хотя нужно ли?
weko
Вроде ведь удобнее по времени создания, так как это самое информативное
Vort
над сценариями использования надо думать
Vort
тут всё важно :(
Vort
и IP адреса, чтобы кластеры искать
Vort
и количество байт, чтобы следить за жирными туннелями
weko
Туннели тут не при чём
orignal
еще для показа сортировать а не жирно ли? ))
weko
Кластеры сортировкой не ищут
weko
Это странно
Vort
"еще для показа сортировать а не жирно ли? ))" - это редко вызываемый участок кода, тормозить будет только если юзер на F5 уснёт
weko
orignal: так пару раз в день консоль отдать можно и сортировать)
weko
Чо там на легке отсотирует даже 3 тыщи)
weko
И то тормозить будет только тред с консолью
Vort
"Кластеры сортировкой не ищут" почему? если подряд идут похожие IPшки - это хорошо видно на отсортированном списке
weko
От которого ничо не зависит)
weko
Vort: а если не подряд?
weko
Короче варианты либо по времени создания либо по айпишкам
weko
По времени создания это то что сейчас
Vort
можно ещё время жизни коннекта добавить. сам не знаю зачем )
weko
Шобы было!)
weko
Чем больше информации, тем больше аномалий можно заметить
Vort
id-шки я, кстати, поиском браузера вылавливаю
Vort
сожалею, если у кого-то в браузере нету поиска
weko
Это понятно))
Vort
ну вот для них сортировка меньше всего имеет смысл
relaybot
13R4SAS: там сортирока вообще плевая
relaybot
13R4SAS: сортировка*
orignal
естествено
relaybot
13R4SAS: по байтам тем более
orignal
std::sort с предикатом
relaybot
13R4SAS: мы же один раз опрашиваем список, а потом уже крутить как угодно можно
orignal
можно
orignal
лень
relaybot
13R4SAS: Vort, ты знаешь что делать)))
Vort
"там сортирока вообще плевая" "std::sort с предикатом" для начала надо из map сделать vector?
orignal
естественоо
Vort
через push_back ? ничего умнее в C++ не нашёл
orignal
естественно
orignal
но зачем в vector
orignal
проще в list
orignal
а еще лучше в set
orignal
и ему контрукторе передать компаратор
Vort
потестирую пока что получилось с vector`ом
orignal
тогда при вставке будет сразу сортировать
orignal
лучше с set-ом
orignal
vector будет очень томрозить на сортировке
Vort
ок, я понял. посмотрю, получилось ли вообще что-то вначале
Vort
нормально ли будет если свежие транспорты будут наверху?
Vort
то есть, сортировка по убыванию
orignal
не знаю
orignal
лучше по IP адресу сделай
orignal
удобнее искать
Vort
set кстати не подойдёт - ключи (CreationTime) могут быть неуникальны
Vort
а для IP адресов нету функции сравнения сейчас
Vort
сортировать же их как строки - будет выглядеть ужасно
Vort
хотя попробую сделать нормально
Vort
только вот и тут не уверен, что IP:порт будут уникальны
Vort
для того, чтобы в set засунуть
Vort
так как уникальность пар IP:порт (для set`а) под сомнением, решил сделать вот так: "<~orignal> проще в list"
Vort
если надо как-то ещё оптимизировать - готов дорабатывать
Vort
в качестве бонуса получилась группировка Ygg адресов :)
R4SAS
orignal: опять боб сдох
Vort
R4SAS: можешь мой коммит глянуть?
R4SAS
Vort: а у тебя чего выплевывает?
Vort
ну у меня работает нормально. но мало ли - вдруг надо что-то доделывать
Vort
вот и спрашиваю - годится изменение или нет
R4SAS
возрастающий как я понимаю?
Vort
да, по IP адресам
Vort
точнее IP:портам
R4SAS
да вроде нормально
Vort
ну ок. стоит наверно подождать чтобы ещё orignal глянул
R4SAS
случайно сломал у мышки пластину которая нажимает ЛКМ
R4SAS
)))
R4SAS
сидел клеил
Vort
это как так? вверх дёрнул что ли?
Vort
у меня если вниз нажимать кнопку, то она почти вплотную прилегает
Vort
уже второй микросвич (или как там его) скликал, а сам пластик пока что цел
Vort
я скорее до дырки его протру )
R4SAS
а хз. я её полностью разобрал, почистил внутренности, начал собирать. перед тем как закручивать болтики на днище решил протереть пазы под накладки резиновые (или какие они там), которые сколзят по столу.
R4SAS
видать тканью зацепил. вообще не понял оно отломалось
relaybot
13R4SAS: теперь оно так выглядит
Vort
тогда понятно. я внутрь оочень редко забираюсь
relaybot
13R4SAS: xmpp.ilita.i2p:5443/upload/645958a0e0c0d9f614caf21ec550232c15cf882b/IznjJGHoFftYnMZfwLXCRECuGelgtQPir8li5Lyl/20230202_224753099_aad4..jpg
Vort
relaybot должен был картинку прислать что ли?
relaybot
13R4SAS: да. выгружалась
Vort
интересно, мог ли бы помочь с этой проблемой 3d принтер. вроде бы они для такого должны подходить
R4SAS
долго печатать
R4SAS
да и поверхность будет рефлёной
R4SAS
так, чет я отвлекся
R4SAS
надо проверить где в этот раз встало
R4SAS
хм. не помню пересобирался ли я
Vort
кстати, по поводу set`а. если в коде нету защиты от такого, то, скорее всего, юзер может быстро поменять ключи, перезапустить узел и наделать новых подключений с того же IP:порта
R4SAS
orignal: фикс не помог
R4SAS
опять там же
R4SAS
#4 0x0000560bd93783ca in std::lock_guard<std::mutex>::lock_guard (this=0x7f64497f9058, __m=...) at /usr/include/c++/8/bits/std_mutex.h:162
R4SAS
#5 0x0000560bd93fa2a3 in i2p::client::LeaseSetDestination::FindLeaseSet (this=0x7f641c16b670, ident=...) at libi2pd/Destination.cpp:229
R4SAS
#6 0x0000560bd964b2c6 in i2p::client::BOBCommandSession::LookupCommandHandler (this=0x7f641c1753b0, operand=0x7f641c153890 "5uvonv22up5evgfm42v3tylaljzenqx5bem5ukouitxgs4qa6zra.b32.i2p", len=60) at libi2pd_client/BOB.cpp:667
R4SAS
ну и что
R4SAS
это не должно мешать сортировать
Vort
у меня подозрение, что это будет UB
Vort
ну или просто одна из записей не добавится
R4SAS
они друг за дружкой будут
R4SAS
> Example
Vort
да с list понятно
R4SAS
добавь там пару повторений и попробуй
Vort
я говорил про вот это:
R4SAS
а
Vort
"<~orignal> лучше с set-ом"