IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2022/01/20
~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
HidUser0 но очищается память же
orignal тебе от этого легче?
orignal если процесс отжирает больше памяти чем мог бы?
HidUser0 нет конечно
HidUser0 а какое вообще значение MAX_PACKET_SIZE имеет? проверку не добавляет же
orignal const size_t MAX_PACKET_SIZE = 4096;
orignal кстати это интересный вопрос откуда
orignal это значение
HidUser0 uint8_t buf[MAX_PACKET_SIZE];
HidUser0 именно тут
HidUser0 вообще обычно uint8_t buf*; пишут же
HidUser0 uint8_t *buf;
HidUser0 а блин, понял
HidUser0 все
orignal когда как
orignal а вот 4K это да вопрос
HidUser0 не туда смотрел, все ок
HidUser0 это другая структура
orignal 4K вообще быть там не должно
HidUser0 а что должно?
HidUser0 ну получается 4К на стеке выделяется
orignal const size_t STREAMING_MTU_RATCHETS = 1812;
orignal на самом деле вот это
orignal да нет с Packet там все в порядке
orignal и он повторно используется
orignal а вот SendBuffer это какая то дичь
HidUser0 типа len не инициализируешь?
orignal инициализирую
orignal мне не нравится выделение блока памяти из кучи
orignal говорю же
HidUser0 ой емае
HidUser0 const uint8_t * b, size_t l, SendHandler h):
HidUser0 l не используется
orignal используется
orignal len(l)
HidUser0 прошу прощения
orignal дело тут вот в чем
orignal когда идет большой поток данных этот код вызывается часто
orignal и запрос кучи на каждый передаваемый пакет это тормоза
HidUser0 ну да
HidUser0 а как ты хочешь сделать?
orignal вот счас стал смотреть код I2CP и наткнулся на использование этого кода там
orignal не ну когда ты передаешь килобайты в секунду это без разницы
orignal а когда мегабайты то уже существенно
orignal пул из блоков по 4K
orignal типа того
orignal и при необходиомти брать оттуда и возвращать туда
HidUser0 new это же malloc в си, да?
HidUser0 там все это под капотом делается
HidUser0 тебе же поиск блока делать надо
orignal new это malloc + констурктор на нем
orignal не надо
HidUser0 а так это все написано на си и оптимизированно
orignal если блоки одинаовокй длины
HidUser0 а если не хватает?
orignal ну не хаватает выделит новый первый раз
orignal если слишком много то можно почиститб
orignal это уже везде так делается в коде
orignal если не хватает то делается так
HidUser0 а очистка по таймеру?
orignal как правило да
orignal таймер проверяет если лишнего сидит в пуле то чистит
orignal что спайки не засирали память ненужными блоквми
HidUser0 изобретаем велосипед короче
orignal это не велосипед
orignal это только для высоконагрженных приложений
orignal для обычных хватает new/delete
HidUser0 ладно
HidUser0 у тебя таймер будет на очистку?
orignal так он и есть в других местах
HidUser0 понял
orignal иногда по таймеру
orignal иногда по опредленному событию
orignal кстати openssl тоже malloc на каждый чих не вызывает
WayBest Извиняюсь что влезаю, а не сборщик мусора ли это?
orignal а использует свой менедж памяти
HidUser0 норм
orignal нет не сборщик
WayBest А не хочешь сделать очистку не столько по таймеру сколько по таймауту?
orignal а зачем?
HidUser0 а в чем разница WayBest
WayBest А разница в том как контролировать мусор
orignal очистка нужна только чтобы литимтировать потребление памяти
orignal так это не мусор
WayBest Ну условно мусор)
orignal тут иные цели просто
orignal сократить не используемую память
orignal а память отжираемую процессом
WayBest Ты хочешь оптимальнее переиспользовать память процесса?)
HidUser0 WayBest: а что это даст
orignal иначе говорю память может и не использоваться и учетки ее формально нет
orignal но процесс все равно ее держит
WayBest Ну я думал сделать время жизни у объекта
orignal считая ее как бы своодной
WayBest И по истечению удаление
HidUser0 WayBest: зачем так сложно? какие преимущества?
orignal нет я хочу уменьшить число обращений к куче
WayBest Но обновлять время жизни если к нему был доступ
WayBest А типа кешировать в стек?
orignal за счет переиспользования блоков одинакового размера
orignal ну типа того жа
orignal чтобы если блок больше не используется его не возвращать системе
orignal а отдать под след блок который все равно скоро понадобится
WayBest HidUser0: преимущества у нас будет возвращаться память системе
WayBest Ну можно помечать как свободную память
HidUser0 WayBest: так она и так возвращается с таймером
WayBest И если нет претендентов больше опр времени то возвращать
orignal тогда мы выделяем блок без системного вызова
orignal а это резко повышает производительность
WayBest То есть просто запись по указателю?
orignal ну примерно только возвращать не обязательно по времени
orignal ну посмотри как сделано
orignal просто связный список блоков
HidUser0 главное реализовать быстрее, чем это сделано в libc
WayBest Ну короче связанный список
WayBest В которых нода тупо массив данных хранит
orignal в libc там сделано для блоков произовльной блины
orignal среди свобоных участков ищется подходящей длины
WayBest А ведь реально заюзать просто связанный список
orignal в нашем же сучае она всегда одинакова
orignal так я так и делаю
orignal именнно связный список
WayBest А с доступом что?
WayBest O(n)?
orignal O(1) разумеется
orignal берем из начала и возврашаем в начало
WayBest А если освободится блок где-нибудь по середине?
WayBest Просто перебрасываем в начало его?
WayBest Или в тот же конец
orignal в смысле посередине?
HidUser0 а, так это очередь уже. тогда да, там все быстро
WayBest Ну вот освободился чанк по середине списка
orignal вот освбодился блок добавил его в список пула
orignal если еще осбодился дальше добавил
HidUser0 типа два списка, свободный пул и не свободный?
orignal поттреболся блок взял из списке переместил указатель на следующий
WayBest А не проще в конец их кидать?
orignal нет следующего взял из кучи
WayBest Так же дешевле чем 2 списка
HidUser0 WayBest: не проще, вставка это долго
WayBest + хранить конец списка
WayBest А вплане долго
WayBest 1-2 адреса записать
orignal нету никакх двух списков
orignal кроме того глупо кидать в конец а брать из начала
orignal потому как вот вернули мы блок
orignal потом его кто то его снова взял
orignal так он может быть еще в кэше проца
orignal короче все это уже работает и работает хорошо
orignal и вот SendBuffer для стримов надо переписать тоже с использованием пула
orignal чтобы было быстрее
orignal и меньше памяти захватывало
WayBest И что прям вырастет скорость в ш2з?
WayBest Жаба то не изменится
orignal а мы тестируем когда тоннли идут только через i2pd ))
HidUser0 orignal: а что будет, если два раза вызовится void Release (T * t)?
WayBest О а как режим такой включить?)
HidUser0 это же получается предыдущий аллоцированный блок утечет
WayBest А там нет проверки что блок релизнут?
WayBest Там вроде адрес просто зануляется
orignal HidUser0 ничего хорошего
HidUser0 то есть два раза Release не вызывается&
orignal потому надо с этим аккуратно
orignal ну или shared_ptr
orignal тогда он сам разберется
WayBest Ох уж этот умный с++
HidUser0 эт понятно
orignal вот тут Release вызывается именно тогда когда надо
orignal ну а 2 раза Release так и 2 раза delete можно вызвать
HidUser0 ты хочешь сказать, для каждого блока свой MemoryPool?
HidUser0 а я думал он общий
HidUser0 а стоп
orignal для каждого сообщения свой грубо говоря
orignal их много
HidUser0 а где они хранятся?
HidUser0 все MemoryPool
orignal каждый в своем
orignal Packets например в StreamingDestination
orignal SSU пакет в SSUServer
orignal буфера RouterInfo в netdb
HidUser0 а как происходит поиск свободного буфера в этих спискахх
orignal блин
orignal нет никаого поиска
orignal берется первый из списка и все
orignal и начало списка перемещается на следущий блок
HidUser0 а если он не свободный
orignal если он уже используется его не будет в этом списке
orignal он вернется в список только когда станет свободным
orignal а если список пустой то вызовается new
HidUser0 ага
HidUser0 последний вопрос
orignal и выделится новый из кучи
HidUser0 вернется в список, это же вставка?
orignal нет
orignal добавится в начало и станет новым началом
orignal а старое начало станет указателем на следующий
HidUser0 окец, понял
HidUser0 ага
orignal система простая как велосипед
HidUser0 благодарю
orignal тут еще больший прикол
orignal где хранится указатель на слудующий
orignal а прямо в начале самого блока и хранится
orignal потому блок должен быть не менее 8-и байт
HidUser0 ну типа +8 байт к каждому блоку? в этом прикол?
orignal нет. прямо в начало блока пишется
orignal никаких +8 байт ))
HidUser0 а сами данные где хранятся
HidUser0 ну по ссылке да?
orignal а в пуле не надо хранить данные
orignal там же свободная память
orignal данные там появялся когда блок используется только
orignal вот такая хрень получается когда надо передвинуть указатель на следующий ))
HidUser0 прикольно
orignal трюк еще начала 90-х
orignal про которые нынче все забыли
exokinetic aaaaaaand I'm back :D
exokinetic raspberry pi gets quite a work out during the 'make install' process
exokinetic had to increase my swapfile from the defualt 100 megs, ran out of memory and got kicked out of the compiler
exokinetic {standard input}: Assembler messages:
exokinetic {standard input}:104477: Warning: end of file not at end of a line; newline inserted
exokinetic c++: fatal error: Killed signal terminated program cc1plus
exokinetic compilation terminated.
exokinetic increasing swapfile to 512 megs seemed to solve the issue
exokinetic RPi Model 1B (512mb RAM)
exokinetic latest release of raspberry pi OS 'lite'
exokinetic let this router build for an hour and I will fire up BiglyBT
exokinetic okay, biglyBT fired up
exokinetic already transfering @400KBps
exokinetic here something interesting to report:
exokinetic I had not mentioned this when we were discussing the issue with i2cp that original just fixed;
exokinetic but there was an odd behavior when downloading
exokinetic a download would start
exokinetic slowly download speed would increase
exokinetic (this is obviously normal behavior...)
exokinetic download speed would peak somewhere, but it would never plateau and stabilize
exokinetic it would peak, and then it would immediately start falling
exokinetic this would happen on a seemingly regular cycle
exokinetic about a 15 minute period from peak to peak
exokinetic inevitably, transfer speed at the peak slowly goes down and down
exokinetic I am happy to report, it seems that has been fixed as well!
orignal lack of memory
orignal you need 1G swap
exokinetic 15 minutes running so far
exokinetic and the download speed is basically sideways
exokinetic holding steady at around 380KBps
exokinetic <orignal> lack of memory -totally possible
orignal I know it
orignal always have this issue on VPS
orignal c++ compiler consumes too much memorry
exokinetic orignal> you need 1G swap -> I had 100 megabyts to start with
exokinetic raspberry pi os defualt
exokinetic I set it to 2G just to be sage
exokinetic then watched memory usage in htop through the whole process
orignal I built on my RPi1 with 1G swap
orignal g++ 10
exokinetic max swap usage was ~400
exokinetic definitely think 1G swap is a good idea
exokinetic bad things happen when you run out of RAM addresses >.<
exokinetic dude this is awesome
orignal what?
exokinetic biglyBT download speed is slowly rising
exokinetic just about to cross 500KBps
orignal haven't tried torrents yet
orignal will do
orignal i2psnark witj Game of Thrones
exokinetic the maximum transfer speeds I was getting with java i2p using i2pdsnark was 1-1.2 MBps
orignal I2CP in Java is very optimized
orignal I2CP in i2pd .... well needs more work ))
exokinetic orignal> I2CP in Java is very optimized ->I believe it, it seemed to work very well
orignal because they use I2CP for everything
exokinetic orignal> I2CP in i2pd .... well needs more work )) -> I am happy to be of assistance :)
orignal i2pd's tunnels don't use I2CP
orignal also not all I2CP options and messages are implemented
exokinetic orignal> i2pd's tunnels don't use I2CP -> like, natively, by default
exokinetic what is "default" tunnel protocol in i2pd?
orignal they work directly without I2CP layer
exokinetic seems more efficient, if it can be done that way ...?
orignal I believe it
exokinetic does the 'java' nature of i2p require the use of i2cp layer?
orignal my stream are about to select tunnels and leases
orignal I think it's more historical reasons
exokinetic (sorry if I ask stupid questions) -thank you for taking the time to answer me!
orignal like streaming is an extrenal app there
exokinetic <orignal> I think it's more historical reasons ->I can understand that
orignal so for me I2CP is just another api protocol like SAM
orignal and ofc i2pd's SAM doesn't use I2CP
exokinetic okay, BiglyBT running for an hour so far, and no duplicate local destinations
exokinetic averaging ~480KBps atm
exokinetic 2.5gb test file is just about done
exokinetic very happy with that
orignal good hat it works
orignal *that
orignal HidUser0 когда будет время тоже глянь на предмет потребления памяти с торрентами
exokinetic I can report memory use is a bit lower than my previous build
exokinetic I used to hover around 24-30% memory usage
exokinetic right now I am averaging 16-18%
exokinetic lower memory usage and higher download speeds, whats not to like ;)
eternalchaoticexplosion <eternalchaoticexplosion> * Now talking on #SHARDCOUNCILOFELDERS
eternalchaoticexplosion <eternalchaoticexplosion> * irc.ilita.i2p sets modes [#SHARDCOUNCILOFELDERS +nt]
eternalchaoticexplosion <eternalchaoticexplosion> потом перенесу этот шард на свой ирц, тут слишком узкие лимиты на серверах.
eternalchaoticexplosion <eternalchaoticexplosion> по числе одновременно заджойненных каналов особенно и по никам проблемы
eternalchaoticexplosion <eternalchaoticexplosion> постоянные
exokinetic original/R4SAS -thoughts on using ZRAM?
exokinetic swap file on compressed RAM disk instead of sd card (RPi)
exokinetic going to test it out for a bit
exokinetic 25% of 512mb total memory used for ZRAM (128mb)
exokinetic compression factor of 3.0
exokinetic 128 x 3 = 384
exokinetic lz4 compression algorithm is still faster than the RPi's RAM I/O at 3.0 compression ratio
exokinetic its going to require 'some' cpu cylces to process the compression/decompression, but I read it improves memory performance on RPi's, and is MUCH better than using swap on the sd card or even a solid state drive
exokinetic <exokinetic> 25% of 512mb total memory used for ZRAM (128mb) -> 512 - 128 = 384
exokinetic 384 + 384 = 768
exokinetic will probably experiment with 33% ram as zram swap with 3:1 compression ratio for 343MB(ram) + 507MB(ZRAM) = 850MB
HidUser0 orignal: транк?
orignal HidUser0 ага
evil вернулся спустя месяц и хочу спросить
evil какие у ш2з-комьюнити планы? (я имею ввиду не только роутер)
evil есть желание поучаствовать в разработке чего-либо, но для этого мне нужно знать заранее, какой стек технологий учить
orignal никаких ))
evil всмысле
evil т.е разе что самому проявлять инициативу?
R4SAS вон, недавно доведение xmpp до кондиции работоспобной в ш2з
orignal а что еще делать?
orignal i2pd работает нормалньо
R4SAS он говорит о чем либо помимо ш2зв
orignal <orignal> никаких ))
orignal я ж ответил
Словесник-Былинник вот "наверное" кто то федерацию смтп мыла может посмотреть и доделать... а evil ?
evil так вроде есть bdsmail
R4SAS поделие психа
R4SAS знаем такое
evil ну так а что делать
Словесник-Былинник ты ее смотрел евил ? вчера же тебе послали... установил ?
evil да
Словесник-Былинник но для смтп это не то... это пример просто... с настоящим серваком это поделие так не пойдет без изменений
Словесник-Былинник там п2п... один аккаунт, а сервал мулти
Словесник-Былинник это если тебе интересно это.. т.е. к примеру
evil хорошо, а её нужно доработать или что-то с нуля разрабатывать?
Словесник-Былинник доработать скорее, но пример бсдмыла довольно хороший
Словесник-Былинник я не уверен вообще что федерация мыла серваком будет востребована на и2п... но это мое мнение
evil почему?
evil я так понимаю что mail.i2p только самому себе отправляет письма
Словесник-Былинник evil: я тебе на пубсуб напишу еще кое какие мысли, но подумай если хочешь это делать... многие берутся и бросают. Надо увеенность что тебе это надо
Словесник-Былинник про мыло я сказал что это мое мнение... не значит что так и есть :)
evil мне лично всё равно, поэтому спрашиваю что было бы востребовано, если не почта тогда что
Словесник-Былинник легкое: десктоп клиент для плеромы... walebird подделать для и2п.
R4SAS gjlltkfnm)))
R4SAS подделать))
Словесник-Былинник не совсем легкое: эфир/геть доделать :))) для и2п... так то работает но криво
Словесник-Былинник R4SAS : сделали уже ?
R4SAS нет
R4SAS lagemeet только иссуй создал
evil вижу
Словесник-Былинник пошлют нахуй наверное или сделают к лету
Словесник-Былинник там надо просто домен чекер выкинуть в начале ... он чекает домен и кроме ком, орг .... нихрена не берет.
R4SAS скорее не сделают
Словесник-Былинник роутинг и2п к этому нипричем
Словесник-Былинник плерома то чттп/чттпс и все на прокси пойдет хорошо, но вот черек ебучий надо убрать
Словесник-Былинник evil: ты го знаешь или какой ?
evil вчера начал учить
evil не сложно
R4SAS начал)))))
R4SAS ыыы
orignal у нас здесь что? цирк?
R4SAS Словесник-Былинник: ты можешь текст ошибки скинуть
R4SAS при указании i2p домена в whalebird
Словесник-Былинник R4SAS : вот вспомнил, цонсерва и2п... если связи нет с сервером ( обычно в начале когда проблемы с и2пд или связи нет )... говорит "xxxxxxx tor / onion network not available". Косметика конечно... но ты понял о чем я
R4SAS Словесник-Былинник: да, я видал
Словесник-Былинник включи валебирд... прокси даже можешь поставить на 4444 ... как только домен пишешь// она тебе ... это не домен... если блабла.ком то начинает чекать, и2п даже не воспринимает как домен
R4SAS ты конкретно ошибку скинь
R4SAS чтобы я отследить мог по коду
R4SAS я не хочу запускать клиент
Словесник-Былинник ну вечером только тогда...скину
R4SAS долго
R4SAS придется тогда самому
Словесник-Былинник я стер этот валебирд :)
Словесник-Былинник orignal : что ты против цирка ыто имеешь ? хаха
orignal ничего
orignal ну сам понимаешь
evil R4SAS уже собрал
evil R4SAS пишет Please only enter the domain name
R4SAS evil: я уже нашел где и почему
Словесник-Былинник govoril vse легко ? :))) я просто старенький и иногда забываю многие штучки
R4SAS вот вам и фикс
Словесник-Былинник отнял кусок у евил ... тебе не стыдно R4SAS ?
R4SAS нет)
R4SAS фикс в 3 символа, такое себе
R4SAS а он мог и консерву переписать для ш2з
R4SAS только опоздал опять же
Словесник-Былинник может для плеромы создать где то обьясниловку .. как для хмпп ?
evil R4SAS по любому уже смотрел исходники
evil ну остаётся мыло..)
R4SAS нет, я их первый раз открыл
R4SAS я ж не мастодонтер
R4SAS вполне хватает ирки
evil ясно
R4SAS как его интересно собрать под винды
evil я бы поставил виндовс....
evil да вот только боюсь опоздать :D
R4SAS я уже ставлю nodejs
Словесник-Былинник evil : про смтп... поставь сервак ... и посмотри 3proxy... она как раз имеет спец. смтп прокси там !!! это единственное что надо. проверь если будет работать на предмет федерации.
evil R4SAS собрал, не работает)
R4SAS make clean ?
evil R4SAS т.е у тебя работает?
R4SAS evil: сейчас собираю
evil а есть возможность как-то скрины кидать тебе?
R4SAS жабер
R4SAS паста
R4SAS как угодно
R4SAS evil: работает всё
evil залогинился всмысле
evil залогинился*
R4SAS у меня нет акка
R4SAS я простоввел домен
evil а search нажал?
evil ща
evil а какой прокси? я http/https ставил
R4SAS http
R4SAS только далее вопрос Словесник-Былинник
R4SAS Словесник-Былинник:
R4SAS Failed to get authorize url
orignal R4SAS как тебе план с SendBuffer?
R4SAS orignal: я почитал и не понял чего в итоге ты будешь делать
R4SAS только понял что тебе не понятно откуда там 4К
orignal не в том дело
orignal суть что на каждый пакет выделяется буффер с помошью new uint8
R4SAS это видел
R4SAS через сокс запрос уходит
R4SAS но плюется на TLS
R4SAS unable to verify the first certificate
R4SAS что весьма странно
R4SAS ибо CA серт установлен в систему
orignal ты понимаешь что это вызывается на каждый отправляемый кусок данных? ))
R4SAS понимаю
orignal надо чинить че
R4SAS надо)
orignal вот какую хуйню нашел
orignal ну и 4K неизвестно откуда
orignal тоже может сильно улушить дело
R4SAS такс, вижу что черещ socks5 пашет whalebird
R4SAS но надо отрубать проверку сертификата
R4SAS NODE_TLS_REJECT_UNAUTHORIZED = 0 в env
orignal а чего нетпслит?
R4SAS а хз
R4SAS я не отлетал вроде отсюда, значит не у меня проблема
orignal так и я не отлетал
orignal значит просто линк
R4SAS ага
Словесник-Былинник R4SAS : серты теперь глушит ? или надо роот поставить на систему, но муторно для юзера будет конечно
Словесник-Былинник через 4444 или 4447 прокси ? пашет ?
R4SAS Словесник-Былинник: под виндами - не хочет грузить серты из системы
R4SAS приходится отключать проверку
R4SAS через сокс
R4SAS хттп прокси почему то хочет чтобы сервер отдавал http
Словесник-Былинник еси отключаешь проверку то работает ?
R4SAS да, работает
Словесник-Былинник но аккаунты ты сначала сделал на вебморде ?
R4SAS да
Словесник-Былинник ок... как мне получить этот бинарник ?
Словесник-Былинник или самому его делать ?
R4SAS на что? винду?
Словесник-Былинник я хотел на линуксе проверить.. в крайнем случае на маке
R4SAS там есть релиз экшен для GHA
R4SAS так что если сделать релиз в форке, то соберет и зальёт для всего
Словесник-Былинник ты патчал последий стаб. или бета 2 ?
R4SAS я патчил мастер
R4SAS значит бета
R4SAS а не, он оказывается тег 4.5.0 тоже сделал
Словесник-Былинник думаешь хочет чттп потому что ты проверку сертов отключил и она перешла на чттп сразу после этого
R4SAS нет
R4SAS там что то не так в коде
R4SAS я этого не трогал совсем