Na wat geheugenproblemen op een server ben ik het eens goed gaan uitzoeken: wat betekenen de getallen in het free command in Linux/Unix eigenlijk? En ik vond het antwoord in een forum:

bf@tbwb-dt-bf:~> free -m
             total       used       free     shared    buffers     cached
Mem:          3978       3848        130          0         28       1985
-/+ buffers/cache:       1834       2144
Swap:         2055          0       2055

Wat betekenen al die getallen nu eigenlijk? Wel, de eerste rij is je fysieke RAM. Wat er dus feitelijk aan geheugenchippies in je computer zit. En daarvan wordt gemeld wat er nu eigenlijk precies in gebruik is. Dus, zowel door applicaties, buffers, kernel, caches, etc. (In dit geval in megabytes, vanwege de -m optie bij free.)

Maar, zoals we allemaal wel weten, cachet de Linux kernel dat het een lieve lust is. Alles wat ie leest en ontvangt zet ie meteen in het geheugen. Er is immers meer dan zat meestal. Dat zijn die ‘buffers’ en ‘cached’ getallen. Die zijn dus wel degelijk in gebruik in geheugen, maar als een applicatie RAM nodig heeft, zal de kernel die buffers vrijgeven. En het gevolg daarvan, staat in het regeltje eronder. Onderstaand schema toont dat:

bf@tbwb-dt-bf:~> free -m
             total       used       free     shared    buffers     cached
Mem:             T          U          F          S          B          C
-/+ buffers/cache:      U-B-C      F+B+C
Swap:           TS         US         FS

De getallen in de tweede rij zijn dus de gebruikte en vrije RAM voor applicaties. ‘used’ minus ‘buffers’ minus ‘cached” is in gebruik door applicaties; ‘free’ plus ‘buffers’ plus ‘cached’ is beschikbaar voor nieuwe. En als dat op is, dan komt de OOM-killer in actie. Maar daar zullen we het nu maar niet over hebben.

Categorieën: Opinie

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.