( _Franko_ | 2024. 05. 05., v – 09:25 )

A leak definicioja, hogy nem hasznalod tobbet. Ergo nem fog viszajonni.

Nem, a leak definíciója az, hogy funkcionálisan felszabadítható memóriaterület foglalt marad. Arról, hogy időnként ráolvas-e a program vagy sem, arról a leak semmit nem mond.

Mondok egyszerű példát, legyen az a feladat, hogy a program feljegyzi és logolja egy URL válaszidejét percenként. Ha a válaszidőt valamiért egy láncolt listába teszi és megőrzi végtelenségig, akkor az egy leak, de mivel mindig hozzá kell fűznie egy újabb elemet, mindig be kell töltenie a teljes listát. Ha ezt rendszeresen kiteszed swap-re, akkor percenként latency vesztésed lesz, ha nem teszed ki swap-re, akkor meg más aktív dolog fog kikerülni és felváltva latency problémáid lesznek.

Ez a leggyakoribb leak és végtelen sok ilyen leak van, ami mindig visszajön és egyre több idő visszahozni. A legkevésbé gyakori leak az, hogy nem kell többé a lefoglalt memória.

Van annyi memoriaja a gepnek, hogy a hasznalt memoria ne lapozodjon ki. Es van kontrol, swapiness -nek hivjak, tok jol mukodik.

Nincs kontrollod. Azt hiszed, hogy van kontrollod, de nincs.

Ráadásul a swappiness globális és a per process cgroups beállításnak sincs halvány fogalma arról, hogy az adott process hogy működik belül. A swappiness nagyjából annyit tesz, hogy mekkora arányú a file backed page és az anonymous page, vagyis leegyszerűsítve azt, hogy a read/write buffer legyen inkább a fizikai memória vagy a processzek akár nem használt adatai legyenek ott. A swappiness-t akkor érdemes hangolni, ha például nem olvasol sok adatot fájlból, nem időkritikus a fájlok olvasása, és adott esetben percek vagy órák óta ott ülnek buffer-ben adatok, amelyeket nem használsz semmire, viszont kinn van swap-en a program saját adata és/vagy, ha a programnak van saját file cache-e. De ezek teljesen más esetek, mint a leak, arra a swappiness nincs érdemleges hatással.

Szerintem rosszul használod a swappiness-t.