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 собирал
orignal
mlt
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
ну, ты добро не дал, вот и сидим кукуем ))
weko
:)
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
я просто логику изменил
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
ок, попробую сейчас вручную собрать, если не получится, то попробую и по ссылке