Mark ☢️
ни у нахрена мне дока по луажит ? у меня не жит
Serezha
ну я не спец но сдается мне что поведение GC абсолютно нормальное у тебя (regular GC на картинке из статьи)
Mark ☢️
ну я не спец но сдается мне что поведение GC абсолютно нормальное у тебя (regular GC на картинке из статьи)
ты не спец, потому что не читаешь мои сообщения. срезы графиков у меня - это рестарт программы
Serezha
ты же написал -> collectgarbage
Serezha
ну похоже в луа ленивый и тупой коллектор но если принудительный вызов помогает - проблемы нет
Serezha
https://stackoverflow.com/questions/53190578/how-to-make-lua-garbage-collector-to-run-more-frequently
Serezha
хз но >> Calling collectgarbage('setpause',100) on startup fixed my problem
fgntfg
Вызов gc дорогая операция, выделение памяти - дешевая
fgntfg
Приложение по памяти падает?
fgntfg
Если нет, то забей
Mark ☢️
Приложение по памяти падает?
Предположительно — ситуация такая: как-то проге понадобилась память. она сожрала, gc не смог почистить (ибо используется) И ЗАПОМНИЛ РАЗМЕР ждал пока дорастёт до удвоенного размера. а оно так и не доросоло
Mark ☢️
неужели придётся вызывать по таймеру ?
Mark ☢️
Кароч, я отдебажил: collectgarbage("count") данную память не видит. но вызов его без аргументов — чистит
Max
выше же написали рецепт collectgarbage('setpause', X)
Mark ☢️
userdata чтоли
Max
где X — размер в процентах от первоначального, когда надо запускать GC
Mark ☢️
Mark ☢️
проявилось в другом: жор памяти есть, но GC его не видит
Mark ☢️
а при прочистке — чистит таки
Max
он его видит, но по умолчанию ждёт, когда мутатор испортит 2x памяти
Mark ☢️
он его видит, но по умолчанию ждёт, когда мутатор испортит 2x памяти
не видит, ибо логирует сильно меньше чем видно в ps и prometheus
Mark ☢️
значение "count" т.е.
Mark ☢️
при старте программы то что он логирует и то что по фкту — совпадает
Mark ☢️
а потом идут жуткие расхождения. вернее не так — память по мнению гц чутьчуть растёт, но по факту растёт сильно быстрее. вот я и сделал вывод, что это юзердата
Mark ☢️
узнать бы от чего.
Mark ☢️
http://lua-users.org/lists/lua-l/2010-09/msg00048.html
Mark ☢️
ЗЫС
Mark ☢️
Mark ☢️
collectgarbage("step", 1) после вот этого в евентлупе, если кому интересно.
Mark ☢️
Надо было считать не только байты, но и количество обжектов
Snusmumriken
Ну чаво, молодец. У nodemcu вообще принято вызывать полный цикл collectgarbage каждые две наносекунды, потому что памяти в пять раз меньше чем 600кб, чего разумеется, хватит не всем. Микрухи. А так — ещё можно писать нормально. Минимально пользоваться луёвыми плюшечками типа итераторов-генераторов, не плодить таблички (и не эксплодить строчки), переиспользовать старые ресурсы и т.д. Можно написать на луях весьма сложную алгоритмически и структурно программу, разметив вообще всё. Единственное в чём будут проблемы — pairs/next, но ты ведь помнишь какие ключи занёс вот в эту вот табличку? Ну, C-style.
Snusmumriken
Если сделать сверх-аккуратно, вообще не используя динамическую память — оно даже не будет расти вообще. В противном случае, при тех же настройках, таки будет расти до тех же величин но медленнее.
Mark ☢️
так вот. я ищу способ как найти кто именно из них самый главный гомосексуалист
Mark ☢️
в питоне поудобнее будет
usernameak
и да
usernameak
каждые две наносекунды это меньше чем один такт средненького микроконтроллера
Mark ☢️
видимо, это просто был сраказм
Mark ☢️
кароч, я сделал по таймеру (в лупе смотрит — если прошло более чем 10 секунд то полный гц)
Mark ☢️
там openssl с его обджектами которые аллоцируются мимо луа, понятно, а луя видит только юзердату. как я и предполагал.
Mark ☢️
вот бы lua экспортировала strong функции malloc/free тогда опенссл бы из использовала
🐅🤦‍♂️
https://songlh.github.io/paper/go-study.pdf
🐅🤦‍♂️
Полезно почитать по распараллеливанию?
Sailor
Кто-то на PHDays идёт?
Serezha
а кто подскажет - если мы вот так собираем луарокс - инклуды про луаджит влияют только на выполнение самого луароск или отражаются потом и на пакетах который он ставит в систему как то
Snusmumriken
На пакетах. То для чего ты собираешь.
Serezha
в чем будет разница если я поставлю луарокс как стандартный пакет alpine linux или соберу его вот как выше?
Serezha
и потом буду ставить модули типа utf8
Artem
в стандартном пути другие, он не будет у тебя их находить и надо будет вручную прописывать
Artem
сам недавно с этим мучался
Serezha
Да вроде норм ставит. Пакеты luarocks5.1 и lua5.1-dev если ставить
Serezha
Но я не понимаю если потом обычно ставить через луарокс - оно все будет с luajit работать нет
Serezha
микросервис
Serezha
пакеты потом в опенрести используются
vvzvlad
так, а я опять с относительными путями запутался. У меня есть два проекта, которые использует одни и те же самописные библиотеки. Билиотеки лежат выше по иерархии, т.е. в /test/libs, а проекты в /test/project_1 и /test/project_1. Как мне из /test/project_1/start.lua загрузить библиотеку? local system = require '../libs/system' не помогает: module '../libs/system' not found: no field package.preload['../libs/system'] no file './///libs/system.lua' no file './///libs/system/init.lua' no file './///libs/system.dylib' no file './///libs/system.so'
vvzvlad
а, сам разобрался: package.path = package.path .. ";../libs/?.lua"
Snusmumriken
Но в целом, не злоупотребляй этим.
Snusmumriken
У меня в переменных окружения записаны LUA_PATH/LUA_CPATH (на линексах это тоже работает), как пути к установленным либам. Пишу любой проект используя "расшаренные" либы из этих переменных, когда билдю игрулю-тулзу — копирую либы оттуда в папку с проектом. В c:\bin\lua лежат "универсальные луёвые либы" а в ..\__love-dist — исключительно лововские.
Snusmumriken
Используй эту штуку, но тоже аккуратно, ибо многие игрушки и тулзы начинают ломаться (на моей памяти, сломались игры ragnarok online и legend of grimrock, а так же тулза path of building для игры path of exile), но это частично фиксится последней строчкой "\?.lua" и "\?.dll" для cpath соответственно.
Snusmumriken
(причём очень удобно использовать переменные только для текущего пользователя, чтобы можно было зайти с другого и проверить, всё ли ты копировал, не падает ли, как будет работать у другого человека и т.п.)
Pavel
https://insomnia.rest/ чет логотип знакомый….мне одному он луа напоминает?
Snusmumriken
Да, очень похоже : )
Snusmumriken
Выбрали бы другие цвета - было бы лучше.
Artem
а где прописана переменная lua_package_path?
Pavel
Привет.
Pavel
Расскажи о себе_) с какими проблемами пришла к нам.
Artem
в целом я хотел узнать как задать глобально пути для поиска файлов, чтобы package.path не прописывать
Anonymous
Энв LUA_PATH
Anonymous
Оно?
Artem
вообщем да, я так и понял что надо добавить сразу в env
Artem
теперь второй вопрос как прописать туда путь до luarocks
Anonymous
В качестве чего?
Anonymous
Пакетного менеджера? Тогда просто в PATH добавить
Artem
чтобы он искал по пакетам luarocks