Lua garbage collector - wycieki pamięci
Ostatnio zmodyfikowano 2023-05-07 22:38
dunno Temat założony przez niniejszego użytkownika |
Lua garbage collector - wycieki pamięci » 2023-02-19 11:33:27 Pomogliście mi w ubiegłym roku z silnikiem gry (od tamtego momentu 0 crashów https://cpp0x.pl/forum/temat/?id=28730&p=1 ). Dzięki. Posiadam silnik gry na bazie yurots - źródła: https://github.com/divinity76/YurOTS/tree/master/ots/source i ponownie zwracam się z prośbą o pomoc/wskazówki, lecz już z innym problemem. Wydaje mi sie ze lua garbage collector nie działa poprawnie. Np. jest restart serwera, loguje się 60 osób i liczba graczy się utrzymuje i zużycie ramu jest na poziomie 1.2GB to po 24h dochodzi nawet do 2.5GB. Bylibyście w stanie luknać swoim fachowym okiem w source które podesłałem ( https://github.com/divinity76/YurOTS/tree/master/ots/source). Zakładam, że problem jest z LUA i ram nabija, gdy gracze używają czarów i jest związany z LUA znajdujące się w actions/spells. Gdyby było 0 graczy na serwerze RAM by nie uległ zmianie przez cały czas uruchomienia serwera.Patrzyłem jak wyglądają destruktory LuaScript::~LuaScript() { if( luaState ) lua_close( luaState ); } ale moim zdaniem wygląda ok, gdzieś wyczytałem, ze mogę zrobić to tak, ale nie wiem czy to przyniesie jakikolwiek efekt? lua_gc(L, LUA_GCCOLLECT, 0) https://stackoverflow.com/questions/45547172/when-is-it-allowed-to-call-lua-gc-in-c-when-also-using-lua-newuserdataMacie jakieś pomysły z czym tu może być problem? Lua było 5.0, potem było 5.1 i było to samo, więc powrót znowu na 5.0 |
|
DejaVu |
» 2023-02-19 11:54:34 Jest jeszcze coś takiego jak fragmentacja pamięci w systemie operacyjnym. Tak więc możesz mieć memory leaki, a może to wynikać z fragmentacji pamięci. |
|
pekfos |
» 2023-02-19 13:34:30 Wydaje mi sie ze lua garbage collector nie działa poprawnie. Bo? |
|
dunno Temat założony przez niniejszego użytkownika |
» 2023-05-03 11:28:48 Jest jeszcze coś takiego jak fragmentacja pamięci w systemie operacyjnym. Tak więc możesz mieć memory leaki, a może to wynikać z fragmentacji pamięci. A jest jakiś prosty sposób by sie o tym przekonac czy to jest problemem? Bo rozumiem, ze wtedy nic z tym nie zrobie? Bo? No po prostu takie moje przypuszczenie ze jakbym wylaczyl wszystko co zwiazane z lua to pewnie by wszystko dzialalo. Nie mam jak tego sprawdzić. |
|
pekfos |
» 2023-05-07 22:38:43 Zwykły leak jest tu dużo bardziej prawdopodobny. Odpal pod valgrindem. Wydajność jest nieistotna, wystarczy że zreprodukujesz problem raz. Albo zgub ten gigabajt, nawet i dwa, następnie zapisz zrzut pamięci ( gcore) i przeanalizuj co tam jest. Tu znalazłem jakiś program https://stackoverflow.com/a/64401135, wygląda jakby fragmentację pamięci też można było tym stwierdzić. W przypadku gdy wycieki zawierają teksty, może wystarczy strings core | sort | uniq -n. Jakbyś na przykład stwierdził >100k kopii nazwy każdego usera, to powiedziałbym że to podejrzane. |
|
« 1 » |