Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lua garbage collector - wycieki pamięci

Ostatnio zmodyfikowano 2023-05-07 22:38
Autor Wiadomość
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
C/C++
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-newuserdata

Macie 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
P-179965
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.
P-179966
pekfos
» 2023-02-19 13:34:30
Wydaje mi sie ze lua garbage collector nie działa poprawnie.
Bo?
P-179969
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ć.
P-180127
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.
P-180132
« 1 »
  Strona 1 z 1