IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/03/16
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
DUHOVKIN_
Guest7184
Most2
Nausicaa
Nikat
Ruskoye_911
Vort
Xeha
anon3
b3t4f4c3
fidoid
karamba_i2p
nemiga
not_bob_afk
onon
plap
poriori
profetikla
qend
segfault
soos
teeth
tetrimer_
uis
un
unlike
user
vade
weko
whothefuckami
Leopold reg.i2p при регистрации домена хочет signature, где её взять?
Zel Leopold: Ты можешь сгенирировать сигнатуру используя i2pd-tools или для доменов второго уровня в web интерфейсе i2pd, есть для этого поле. Зайди в туннели, выбери серверный туннель, кликни на Address registration line,
Zel введи желаемый домен и нажми generate. Получившуюся строку вставь в reg.i2p или используй как address helper
Leopold Получилось, спасибо C:
Zel Рад что смог помочь!
uis Есть slab аллокаторы
lolwut при апдейте apt каждый раз спрашивает из-за измененного конфига. можно как-то изменить состав пакета, чтоб он обновлялся молча?
lolwut переименовать дефолтный конфиг или еще как
orignal Leopold на веб морде строка
Vort uis: найти бы ещё кроссплатформенную реализацию slab`а. ну или хотя бы чисто для винды, чтобы я потестировать мог
orignal а что?
Vort если это был мне вопрос, то я его не понял
Vort попробую я ещё один эксперимент - проверю предположение о том, что основной причиной разрастания кучи являются 62-килобайтные выделения
orignal что такое slab?
Vort перенесу их на виндовые функции VirtualAlloc / VirtualFree
Vort orignal: метод выделения памяти
Vort (я в рестарт, проверять VirtualAlloc)
Vort orignal: даже для рувики кто-то перевёл статью: ru.wikipedia.org/wiki/Slab
Vort поискал я реализации, даже нашёл одну (на Rust), но она не поддерживает винду. надо ещё искать
orignal а я попробую сделать пул для identity
Vort может, поможет. хотя у меня пока что слишком много неуверенности относительно всех этих "дефрагментирующих" методов
orignal это надо делать в любом случае
Vort хотя бы самый простой вопрос - как оценить эффективность изменения? вот при изменении ставится цель - допустим, уменьшить фрагментацию кучи. как проверить - удалось ли её изменением достичь?
Vort я интуитивно понимаю, что пулы могут помогать
Vort но всё же остаётся ощущение блуждания во тьме
orignal ну я смотрел по потребляемой памяти
orignal когда не было пулов жрало совсем неприлично
Vort метод понятный, но малонадёжный. так как нагрузка на узел варьируется
orignal на флудфиле примерно одинаковая
Vort что думаешь про вынесение 62килобайтных блоков в VirtualAlloc / mmap ?
orignal нууу мы на работе так и делаем
orignal тут тоже бы надо
Vort ок. если ничто не помешает моему тесту - посмотрим результат
orignal но у нас там линукс
orignal толкьо
Vort единственное что мне не нравится - на некоторых системах может не быть этой фичи
Vort я вот сейчас глянул в вики - так оказывается даже если есть mmap, то не факт, что он будет рабочим
Vort то есть - минус в том, что надо будет ifdef`ами обвешиваться
Vort может, есть и готовая обёртка какая-то
Vort которая при недоступности перенаправляла бы в общую кучу
orignal насколько мне известно malloc для блоков большого размера сам вызывает mmap
Vort но это линукс. надо ещё под винду поискать
Vort хотя для всех подряд больших блоков, может, mmap и лишний и стоит вызывать только для тех, которые точно в нём нуждаются
orignal начиная с 4K разумеется
Vort важно ещё то, что VirtualAlloc и mmap - относительно дорогие вызовы
orignal конечно
orignal они должны быть редко
Vort вот 62к блоки гадят редко, но метко - думаю, их стоит перенаправлять в виртуальное пространство. а что-то более частое - скорее, не стоит. хотя думать надо
orignal да их лучше 64K делать
Vort ОС сама сделает
orignal 62K это предельный размер I2NP сообщения
orignal понять бы откуда они вообще берутся
Vort вот это тоже важно
orignal кто передает пакеты такой длины
Vort пока точно знаю, что они рождаются при некоторых пиках
orignal или там длина реально может 5K
orignal на пиках говоришь?
orignal так это может NTCP2 быть
Vort ну да. обычно их в памяти несколько штук болтается
Vort а в пиках - 50-100
Vort но, наверно, не во всех пиках. тщательно не проверял
weko интересно откуда пики
weko по 50 штук то
orignal void NTCP2Session::CreateNextReceivedBuffer (size_t size)
orignal на пике просто приходят полные фреймы
orignal а они вполть до 64K
weko ну понятно. просто это выходит сразу несколько туннелей такое делают
Vort я видел ещё и SSU2 пакеты рядом
Vort может, это передача SSU2->NTCP2
Vort ну или наоборот
orignal это как?
Vort ну транзит из одного протокола в другой
orignal в SSU2 всегда только пакеы размером не более 1500
orignal а в NTCP2 там фреймы
orignal объясни как это транзит из одного протокола в другой?
Vort транзит же не обязан быть чётко SSU2-SSU2 или NTCP2-NTCP2
orignal там же будет или на входе много 1K или на выходе
orignal нет конечно
orignal но там будет как правило 1K
Vort тогда почему при этих пиках частенько блоки 1544
Vort вот два момента времени:
orignal для SSU2?
orignal счас покажу
Vort [2023-03-14 04:57:00] a:49394399 f:51177504
Vort 0: 5230560 (9615 * 544)
Vort 1: 4301584 (2786 * 1544)
Vort 2: 4233728 (33076 * 128)
Vort 3: 2951976 (47 * 62808)
Vort 4: 2713104 (56523 * 48)
Vort [2023-03-14 04:57:30] a:42034068 f:58204880
Vort 0: 5227296 (9609 * 544)
Vort 1: 4162560 (32520 * 128)
Vort 2: 2648544 (55178 * 48)
Vort 3: 2618712 (36371 * 72)
Vort 4: 2273760 (28422 * 80)
orignal смоти struct Fragment
Vort за 30 сек из топа ушли как * 1544, так и * 62808
orignal там буфер в 1500 и кае какие поля
Vort в общем, в пиках часто и 1544 и 62808
Vort одновременно
orignal const size_t I2NP_MAX_MESSAGE_SIZE = 62708;
orignal это длина максимального I2NP
orignal вопрос откуда они
orignal и почти нет 4k как я понимаю
Vort в топе по потреблению их вообще не видел
orignal LogPrint (eLogInfo, "SSU2: I2NP message size ", msg->maxLen, " is not enough");
orignal auto newMsg = NewI2NPMessage ();
orignal что в логах с такими сооющениями?
Vort я info не включаю, у меня не так много места на диске )
Vort а ловить надо пик. его может не быть много часов..
orignal просто мне непонятно откуда они
polistern orignal, вспомнила, я когда перед добавлением подписей в боте добилась полной очистки памяти на завершение процесса, а после добавления подписи мне valgrind начал сыпать, Verifier'ы остаются. Глубоко не копала. Может поможет чем.
Vort ну надо чтобы кто-то врубил info и поставил логирование пиков :/
orignal polistern с каким типом? EDDSA>?
orignal Vort или в той строке поменяй на error
orignal я полагал что это крайне редкое событие должно быть
Vort хорошая идея, но я пока что не хочу прерывать тестирования VirtualAlloc`а
polistern На тестовом узле все 3 включены, так что и он там есть.
orignal polistern veirfier из IdentityEx?
orignal вот это возможно потому что там голый указатель
orignal я смотрю код вообще не понимаю что за костыль у меня там сделан с мьютексом
polistern orignal, вроде uniq_ptr был
orignal mutable i2p::crypto::Verifier * m_Verifier = nullptr;
orignal кроче дичь там явная
orignal надо в любом случае чистить
polistern Да, ты прав, перепутала с Signer
orignal signer вещь редкая
polistern У меня частая) На каждое письмо подпись. Надо кстати обновить наверное libi2pd у себя потом, когда KadDHT буду пробовать.
orignal там у тебя signer всего один должен быть
orignal понятно что он вызывается часто но он один
orignal а veirfier-ов много
polistern На каждую identity по одному того и того.
orignal на каждый роутер грубо говоря
polistern Ненене, у меня для своих.
polistern Так, стоп
orignal signer-ов столько сколько у тебя приватных ключей
polistern А, не, всё правильно. У меня там также сделано, через указатель. Мои identity не сильно, но отличаются. Но ничего, ваши тоже будут использоваться, когда отправку/получение через relay буду делать, там шифровать надо будет луковичкой.
polistern orignal, да я уже подзабыла немного какая у меня там логика. Помню, что заставила работать, а детали уже размылись)
orignal ну вот счас время искать утечки памяти
orignal хочу разобрться с этим мьютексом
polistern Ок, буду бдить, потом сразу проверю.
orignal пришло время наводить порядок и в этом
orignal вообще у меня более инетресный вопрос нафига мы храним 384 байта
polistern В плане?
polistern Там же два массива в Identity. Хочешь иначе сделать?
orignal потому что ключи для EDDSA 32 + 32
orignal зачем хранить 384 или можно 64,
polistern Ну да, знатный оверхед
orignal это раньше было ElGamal + DSA
orignal 256 + 128
polistern А сколько всего пар по типам получается?
orignal для роутеров счас всгда ECIES + EDDSA
orignal остальные можно просто дропать
orignal то есть реально 64 байта всего
polistern Ну только совсем древние отваляться, если ещё не отвалились
orignal для адресов же всегда в Identity ElGamal но делов в том что он там не нужен
orignal в смысле он есть но сам ключ не используется
orignal только для вычисления хэша
orignal его можно сразу же выкинуть
polistern Ну не хранить дальше просто в памяти, понятно.
orignal такая стрктура в меня была с самого начала когжа было именно так
orignal сейчас все иначе а код остался
polistern Так кто б туда лез ещё))
orignal вот я и собраюсь разобраться особенно с этим непонятным мьютексом
orignal непонятно зачем там