Shmem

Tudjátok mit jelent pontosan a modern free (procps-ng) "shared" oszlopa Linuxon? Én nem tudtam, de az imént utánajártam, mert a ramom több mint felét ide számolta.


[root@dh root]# free -m
              total        used        free      shared  buff/cache   available
Mem:          15947        6869        5578        1643        3500        6568
Swap:          7167        3638        3529

A shared oszlop a

/proc/meminfo

"Shmem" kulcsával egyenlő, ami egy statisztikai kulcs, egy kivonat, azaz az allokáció máshol is fel van tüntetve.

Miből jön össze?
1. a tmpfs (beszámít a Cached kulcs alá); lekérés:

df -t tmpfs

2. System V IPC shmem (talán beszámítja a processzhez); lekérés:

ipcs -mu

3. "shared anonymous mappings", azaz a /dev/zero vagy törölt fájl mmap-elve MAP_SHARED flaggel (beszámítja a processzhez)
4. GEM pages, avagy GPU objektumok

A 3. módszert alkalmazza a modern X szerver a klienstől kapott pixmap-ek tárolására. Az xrestop listázza, hogy melyk X kliens felelős az allokációért.
A pixmap buffer által elfoglalt memória megjelenik az Xorg processz VmSize/stb soraiban is (

/proc/.../status

).

Nos, így derült ki, hogy a nyitvahagyott JOSM editor leakelte tele a pixmap buffert az X szerverben, abból adódott a magas shared oszlop, illetve a Xorg processz felhízott RSS-e.

Hozzászólások

sub

-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Akkor azt a JOSM-ot ki kell javítani. Gondolom néhány térképobjektumra itt-ott hivatkoznak, ahol nem kellene.