IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/02/28
~acetone
Most2
Nikat
Spirit90
segfault
weko_
raidev не знаю считается ли оно багрепортом, но i2pd замедляет соединение клирнетовское. Может провайдер как-то ловит через dpi и замедляет, может просто коннектов много создает. Включаю i2pd over yggdrasil и скорость клирнетовская нормализуется.
R4SAS не считается
R4SAS менять опсоса
Vort raidev: может, маршрутизатор не выдерживает большое количество коннектов? можно ли напрямую подключить и проверить? или это и есть прямое подключение?
raidev вполне возможно, маршрутизатор не выдерживает
raidev это wifi hotspot с телефона, с обходом блокировки раздачи вайфая
R4SAS orignal: чего бы ты не говорил, а память уже 143 Мб
Vort оу, и у меня процесс раскоровел
R4SAS и да, почему то висят куски маленькие которым уже больше 12 часов
R4SAS но при этом они появились давно с момента старта
Vort Private bytes = 195M, Working set = 133M
Vort то есть, остальное выделено, не используется
R4SAS запущено было ~ в 22 часа 26.02
R4SAS вот такой мелочи по 32, 64, 72 байта очень много
R4SAS если брать сравнение между моменом запуска м текущим, то там еще больше таких пунктов
R4SAS Vort: а у меня наоборот)))
R4SAS Private bytes, 147,56 MB
R4SAS Working set, 215,72 MB
Vort наверно какая-то фича новой винды такое даёт. я думал, что Working set всегда должен быть меньше
Vort кстати, вот мой метод проверки на утечки: я просто сбрасываю Working set с помощью RamMap
Vort Empty -> Empty Working sets
Vort если набирается опять - значит, память программой используется
Vort если висит без использования сутками - значит, имеем проблему
R4SAS да нет, working set наоборот должен быть больше
R4SAS хотя тут ен ясно
Vort я считал, что это та часть памяти, которая активно используется
R4SAS это да
Vort как можно активно использовать больше того, что выделено - это мне надо будет разобраться )
R4SAS но её как раз система подрезает когда нехватка идет в системе
Vort ну вот через RamMap можно подрезать принудительно. но там как-то через зад работает. не с первого раза срабатывает, надо проверять
R4SAS я так понимаю что working set включает в себя private
R4SAS потому что по логике программа постоянно обращается к выделенной памяти
R4SAS но для работы ей требуется как раз память за пределами своего пространства
R4SAS которая потом коммитится в private
R4SAS я два раза попробовал подрезать её, она оба раза выросла до 160 мб
R4SAS а private сейчас 147
R4SAS ну ок, если orignal говорит что нет утечек, то опять же подезание woriking set говорит о обратном
R4SAS подрезание*
R4SAS если бы это просто висела память освобожденная, то тут бы такие записи пропали. и да, те блоки по 32, 64, 72 байта исчезли практически все. но остальное осталось висеть. а при этом у них количество вызовов чет малое
R4SAS Hit Count -- All allocations are grouped by stack trace. Hit Count is the total number of allocations with the same stack trace.
Vort R4SAS: смотришь через диспетчер задач, небось
Vort видимо, есть путаница с терминами
Vort я смотрю через Process Explorer
Vort можешь сказать, сколько сейчас процесс i2pd потребляет Private Bytes по данным Process Explorer ?
R4SAS Vort: я смотрю через System Informer (бывший Process Hacker)
Vort у меня сейчас после обрезания Working set получается вот так: private: 195, working 111
R4SAS Private bytes, 147,56 MB
R4SAS Working set, 173,08 MB
R4SAS Blinded message
Vort у меня и через него Private bytes > Working set. наверно, таки различия в версиях винды сказываются
R4SAS быть может
orignal R4SAS нет утечек которые ищутся профлировщиком
R4SAS тогда чего это за висящие блоки памяти?
R4SAS если бы они вычистились после очистки working set то вопрос бы отпал
orignal ну и откуда они берутся?
orignal а если изнетри openssl?
orignal объясни толком проблему
orignal если много мелких куосков при старте это понятно что RouterInfo
orignal скажу самый простой тест
orignal достаточно запустить на чистом ygg на L
orignal и сразу видно что потребление памяти не растет
orignal хотя и роутеров дохуя
orignal потому что 1. нет тразита 2. нет SSU2 с фпагрментами
Vort непонятно, как вообще pair может потеряться
orignal это мне тоже непонятно
orignal это же просто обертка
Vort то есть, это где-то new pair получается должен быть
orignal или make_shared
Vort не может ли std::list<std::pair такое давать?
orignal std::pair ведь будет выделяться внутри него
orignal это не под нашим контролем
orignal а если такое дает то список должен все врепмя расти
orignal такое возможно но тогда достаточно петатать size()
Vort ну да, это может быть просто бесконечный рост списка
Vort теоретически
Vort проверять надо, да
orignal конечно
orignal потмоу я и говорю что профилировщком это не поймать
orignal если память где и утекает это значит рост каких то структур
Vort такое ещё иногда бывает из-за проблем с многопоточностью
Vort хотя в таком случае, наверно , были бы ещё креши или какие-то подобные глюки, а не просто течь
orignal бывает
orignal но я думаю счас везде стоят мьютексы уже
Vort если бы выход работал без крешей, то можно было бы сравнить выделенную память и освобождённую при выходе
Vort не знаю, нормально ли такое сочетается с либами, правда
orignal это тебе vargrind покажет
Vort и он не показывал?
orignal показывает мизер
orignal и то внутри openssl
Vort ну тогда похоже больше на бесконтрольный рост списка где-то
orignal очевидно что мы что то засираем в процессе работы
Vort хотя странно, на скриншоте там были куски из разных тредов
orignal там не тольк списке там масса других структуры
orignal а еще есть пулы памяти
Vort что интересно, у меня private bytes как стоял на 195 мегах час назад, так и стоит
orignal мне вообще непонятно куда девается память изначально
Vort то есть, такое ощущение, что "утекло" давно. а после прогрева уже не течёт
orignal сразу десятки мегов при старте
R4SAS так в память всез RI грузятся
R4SAS все*
Vort нашёл кое какую софтинку под винду для анализа памяти
Vort стало понятно, почему большой размер адресного пространства
orignal ну допустим 1 RI с средем 2 K
Vort потому, что у меня бинаник на 100 мегов :)
R4SAS Vort: ну это тоже
R4SAS но обычно не символы не грузятся
R4SAS /не/все.
Vort ну там вроде какой-то флаг типа "выгружаемое"
Vort подробностей не помню
Vort кстати, софтина - VMMap. сейчас скрин кину, потом буду рассматривать
R4SAS знаю её
R4SAS всё из комплекта sysinternals )))
R4SAS было бы еще можно внутрь блоков смотреть
R4SAS orignal: не забывай про выравнивание
R4SAS эти 2 КБ станут 4 КБ
Vort заметил стек на 25 мегов. неплохо. хотя логично - 25 потоков - 25 стеков
Vort Thread Environment Block`ов ещё дохрена. жаль, я только первый раз запустил программу, не знаю, нормально ли это
Vort 85 мегабайт
Vort ну это всё виртуальная память
Vort кажется что-то мне, что не в куче дело. из 132 мегов private - 112 мегов working set
Vort 20 "потерянных" мегов это не так уж много
R4SAS а я понял почему у тебя меньше
R4SAS у тебя в WS не держит образы
R4SAS а в остальном у тебя всё так же
Vort потому, что их никто не дёргает. а если у тебя программа для анализа подключена, то она может дёргать
Vort по всем этим 100 мегабайтам может искать символы, допустим
R4SAS ну вот сейчас например без символов, release (15 мб)
R4SAS и оно тут все равно их частично держит в WS
R4SAS и да, без отладчиков/профилировщиков
Vort что используется (или недавно использовалось), то и держит
Vort если сбросить через RAMMap, то, думаю, будет довольно мало
R4SAS не обязательно через RAMMap
Vort неплохо так у тебя винда 4 гига под private data зарезервировала O_o
Vort "не обязательно через RAMMap" через что ещё можно?
R4SAS прямо тут есть как б
R4SAS бэ*
R4SAS так же через Tools
Vort о, хорошо. сейчас на Tor потестирую, он всегда жрёт много ) ну под атакой точнее
R4SAS о, там еще внизу таймлайн добавили оказывается
Vort у меня все кнопки серые, пока не понял, как активировать
Vort очистка, кстати, сработала. хороший вариант
Vort вот как выглядел Tor до очистки: paste.i2pd.xyz/?a62cd2f59afa475c#QfdQv8CWCWWnWi1t7zgBvue2ruU661HVd2LgHjwYmbv
R4SAS пиздец там подтекает
Vort понимаю, что программы разные, но тут я вот этого массивного использования Private Data не вижу
Vort ага, в snowflake ещё хуже. там атаки нет, а течёт ещё сильнее
Vort и разработчикам пофигу :(
R4SAS насчет почему не показывает
R4SAS эти кнопки
R4SAS когда приложение запускаешь можно запустить через него
Vort попробую на чём-то другом сейчас
R4SAS кстати, ты так и не решился пытаться сделать сборку под msvc&
R4SAS я точно пас в этом деле)))
Vort у меня MSVS 2015`й, он не соберёт i2pd. а на новый у меня места на диске C не хватит
R4SAS почему не соберет?
Vort хреновая поддержка новых стандартов
Vort попробовать, конечно, можно
R4SAS там 11 должен быть
R4SAS 17 не обязателен
R4SAS но сразу скажу - заебешься)))
Vort "когда приложение запускаешь можно запустить через него " ну вот в таком режиме и блок можно рассмотреть
R4SAS повсеместно будут вылезать хрень какая нить
Vort "повсеместно будут вылезать хрень какая нить" к примеру, какая?
R4SAS ну, несоответствия в типах данных
R4SAS и прочее
R4SAS я один раз пытался собрать... года 4 назад. в итоге забил
Vort ну то есть плохая поддержка, о чём я и говорю
Vort хотя попробовать стоит
R4SAS не то что плохая. её просто нет
R4SAS мы постоянно пишем на гнус
Vort поддерджа стандарта плохая
Vort именно в 2015м
R4SAS я в 17м пытался если что
R4SAS а изначально оно было собираемым для 12го
Vort порассмотрел я получше VMMap, кажется мне, что стоит пробовать запускать i2pd через него
R4SAS когда еще mikalv и mly были тут
Vort там много чего показывается
Vort "<~R4SAS> о, там еще внизу таймлайн добавили оказывается" там фильтр можно по выбранному диапазону времени ставить
Vort ну я могу сейчас пускануть cmake с генератором студии- посмотрю на матюки )
R4SAS посмотри
R4SAS орать будет как *подставить свою фразу*
Vort cmake только обновлю
Vort если это будут баги i2pd, то починить не проблема. а вот если баги студии, то ну его нафиг
Vort у меня такое ощущение, что облом случится ещё на этапе установки boost. ну посмотрим
weko orignal: а что именно делает параметр address в UDP серверном туннеле?
orignal интрефейс локальный задает
weko Тоесть?
weko Что это значит именно для самого сервера? Что ему приходит?
orignal на какой локальный интерфейс вешается udp сокет
Vort у меня ни одна либа не подключилась через cmake :D ну а помимо этого не так уже и плохо всё
Vort ну я имею в виду для MSVS 2015
weko orignal: клиентский именно?
weko Раз у серверного туннеля
orignal без разницы
orignal и у того и другого
Vort получилось собрать MSVC 2015, с горой костылей ) попробую теперь запустить, надеюсь что сеть не сломается :D
Vort с первого раза заработало. неужели я нигде не ошибся. странно )
orignal так мишаня давно нв VS собирал
Vort в VC отладочная библиотека строгая довольно. можно много багов наловить. если они есть, конечно
Vort (собралось не с первого раза. но когда собралось, то заработало))
Vort я скоро закину первый тестовый патч
Vort но только по C++ коду
Vort что делать с cmake - вопрос отдельный и очень непростой
Vort вот что пока что получилось: github.com/PurpleI2P/i2pd/pull/1892
Vort сейчас опишу по пунктам
Vort 1. ssize_t - это какая-то сомнительная штука, которую VC поддерживает немного через задницу
Vort 1.2. в одном месте от неё вообще толку не было. во втором месте был, но мне кажется, что я нормально переделал
Vort 2. __builtin_bswap16 это штука специфичная для gcc/clang. переставил на _byteswap_ushort
Vort 3. нормальных имён потоков в винде (по крайней мере, в 7ке) нету. поэтому воткнул туда извращение с MS_VC_EXCEPTION, стащенное с сайта майкрософта. не проверял.
Vort 4. (это уже касается сборки) пришлось отключить AESNI, так как в коде асм gcc-шный
Vort были ещё разные предупреждения, но ничего серьёзного
Vort собрал я бинарник таки cmake`ом. но с горой костылей. это, конечно, коммитить нельзя
Vort а вот сделать по-нормальному будет непросто. я, конечно, попытаюсь...
Vort но в любом случае поддержка в C++ коде не помешает
Vort пока что PR открыл в draft режиме. стоит ли сливать вот прямо в таком виде - не знаю
Vort желательно, чтобы я ещё хотя бы потестил вот ту жуть с установкой имени потока
R4SAS а чего ее тестить
R4SAS запустил во внутреннем отладчике msvc и смотришь
R4SAS если потоки обозваны, то все в норме
orignal ну так и как успехи с утечками?
R4SAS в слепую - никак
R4SAS стека то нету
orignal удачи вам
orignal потому что я уже 10 лет скоро как ищу эти утечки ))
R4SAS ну, ты добро не дал, вот и сидим кукуем ))
orignal так я пытаюсь сберечь ваше время ))
weko 4b421d3f - двое суток с лишним, NetDB - 3.6% в среднем
weko 692600df - пока что одни сутки, NetDB - 6,7% в среднем
orignal а в чем разница?
weko Разница в коммите
weko В первом случае после нового алгоритма
weko Во втором до
orignal понял
weko В этом треде не было других изменений?
weko Чтобы понимать, что это именно оно
orignal были
orignal но дополнительная нагрузка
orignal потмоу что теперь проверка нет ли соединения перед выкидыванием
weko А "publish own RouterInfo in router's thread" это копейки?
orignal это мизер
orignal я просто логику изменил
orignal потому что этому коду явно не место в netdb
weko [19:10:39] <orignal> но дополнительная нагрузка
weko [19:10:55] <orignal> потмоу что теперь проверка нет ли соединения перед выкидыванием
weko Первый коммит (4b421d3f) перед этим изменением
weko Так что у меня пока что без этого
orignal наверное
weko Думаю ещё день держать смысла нет, погрешность мало что поменяет
weko Поэтому проверю на с этим изменением
orignal ну да
weko Проверю с этим*
weko Стоп, я слепой
weko Этот коммит был ДО
weko Значит нужно смотреть что было до него
weko Ойййййй
Vort "запустил во внутреннем отладчике msvc и смотришь" - у меня не все либы с дебагом собраны. надо дособрать. да и места на диске маловато для отладочной инфы, надо подчистить. сейчас займусь
weko Короче я слеподыр
weko Пойду тестить дальше)
weko Ну и в любом случае нагрузка явно уменьшилась
Vort собрал в дебаге, проверил - разметка названий потоков работает. убрал draft отметку с PR
R4SAS Vort: попробуй впихать сборку в gha
Vort там есть visual studio что ли?
R4SAS есть
Vort хотя нет смысла
Vort либы будут вечность собираться
R4SAS из не обязательно собирать
R4SAS их можно поставить
R4SAS openssl уже предустановлен
Vort я вот буст себе ставил. так удивился, мягко говоря. он сожрал 5.5 гигабайт
R4SAS а буст можно отсюда взять: sourceforge.net/projects/boost/files/boost-binaries/1.81.0
Vort ну я понял, можно будет пробовать. но для начала надо сделать поддержку cmake хотя бы локально
Vort пока что я только C++ поддержку сделал нормально
R4SAS cmake должен нормально тянуть все зависимости
R4SAS ну... кроме miniupnpc
Vort не будет же он по всему винчестеру искать, куда либа распакована
R4SAS нет
Vort а вот если ткнуть его в либу, то ругается. может, не так тыкаю
R4SAS в FindBoost указаны пути в которых он ищет
R4SAS обычно это пути куда установщик ставит
R4SAS как вариант: _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/boost")
R4SAS т.е. оно в "C:/boost" ищет по дефу, ну и еще в нескольких папках
Vort хм. не работал у меня никак поиск. сейчас ещё раз попробовал - заработал
Vort set (BOOST_ROOT "d:\\boost_1_81_0")
R4SAS -DBOOST_ROOT=...
Vort то потом, если заработает
Vort может про openssl знаешь, как его нормально ставить?
Vort я ставил через задницу, вот теперь ищу, как правильно
Vort ок, попробую сейчас вручную собрать, если не получится, то попробую и по ссылке