Vraag Betekenis van de buffers / cache-regel in de uitvoer van free


Waarom toont mijn server

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Ik heb geen idee over het berekenen van het geheugen in Linux. Ik denk dat er staat dat 5088232 wordt gebruikt waar 7198224 gratis is, wat betekent dat het eigenlijk 5 GB RAM verbruikt?


150
2017-11-17 10:37


oorsprong


serverfault.com/questions/23433/... - Kyle Brandt♦
linuxatemyram.com - Sasha


antwoorden:


Betekenis van de waarden

De eerste regel betekent:

  • total: Uw totale (fysieke) RAM (met uitzondering van een klein beetje dat de kernel permanent reserveert bij het opstarten); dat is waarom het ongeveer laat zien. 11.7 GiB, en niet 12 GiB, wat je waarschijnlijk hebt.
  • used: geheugen in gebruik door het besturingssysteem.
  • free: geheugen niet in gebruik.

total = used + free

  • shared / buffers / cached: Dit toont geheugengebruik voor specifieke doeleinden, deze waarden zijn inbegrepen in de waarde voor used.

De tweede regel geeft de eerste regelwaarden aangepast. Het geeft de oorspronkelijke waarde voor used  min de som buffers+cached en de oorspronkelijke waarde voor free  plus de som buffers+cachedvandaar de titel. Deze nieuwe waarden zijn vaak betekenisvoller dan die van de eerste regel.

De laatste regel (Swap:) geeft informatie over het gebruik van de swapspace (dat wil zeggen, de geheugeninhoud die tijdelijk naar de schijf is verplaatst).

Achtergrond

Om echt te begrijpen wat de cijfers betekenen, hebt u een beetje achtergrondinformatie over het virtuele geheugen (VM) -subsysteem in Linux nodig. Gewoon een korte versie: Linux (zoals het meeste moderne besturingssysteem) zal altijd proberen om gratis RAM te gebruiken voor het cachen van dingen, dus Mem: free zal bijna altijd erg laag zijn. Daarom de lijn -/+ buffers/cache: wordt getoond, omdat het laat zien hoeveel geheugen vrij is bij het negeren van caches; caches worden automatisch vrijgegeven als het geheugen schaars wordt, dus dat doet er niet toe.

Een Linux-systeem heeft echt weinig geheugen als het free waarde in -/+ buffers/cache: regel wordt laag.

Zie voor meer informatie over de betekenis van de getallen, zie b.v. de vragen:

Veranderingen in procps 3.3.10

Merk op dat de uitvoer van free is gewijzigd in procps 3.3.10 (uitgebracht in 2014). De gerapporteerde kolommen zijn nu "totaal", "gebruikt", "gratis", "gedeeld", "buff / cache", "beschikbaar"en de betekenissen van sommige van de waarden zijn veranderd, voornamelijk om beter rekening te houden met de slab-cache van de Linux-kernel.

Zien Debian Bug-rapport # 565518 voor de motivatie, en Waarin veranderen de veranderingen? free output van 14.04 tot 16.04 betekent? voor meer informatie.


215
2017-11-17 11:42



Kun je uitleggen wat voor soort dingen Linux in de cache kan plaatsen? Zouden het bestanden zijn die zijn benaderd of netwerkdingen? - CMCDragonkai
@CMCDragonkai: het antwoord op serverfault.com/questions/23433/... geeft in detail aan wat "cache" en "buffer" vormen. - sleske
Ik denk niet dat de verklaring "total = used + free" klopt, zie de volgende output op mijn machine: $ free -h  total used free shared buff/cache available  Mem: 3.4G 585M 152M 11M 2.6G 2.5G  Swap: 4.0G 84M 3.9G - Sebastian
@Sebastian: Ah, interessant. Het lijkt erop dat de uitkomst van het vrije was veranderd (in 3.3.10). Ik heb mijn antwoord bewerkt om dit te vermelden. Als u geïnteresseerd bent in deze wijziging, overweeg dan om een ​​nieuwe vraag te stellen :-). - sleske
total = used + free + buff/cache - danger89


Voor iedereen die een nog eenvoudigere, stapsgewijze uitleg nodig heeft, vink aan http://thoughtsbyclayg.blogspot.com/2008/09/display-free-memory-on-linux-ubuntu.html, zijn uitleg heeft me veel geholpen.


7
2018-02-13 22:06



meta.stackexchange.com/q/8231/133242 - Matt Ball


De buffers / cache-regel laat zien hoeveel geheugen wordt gebruikt door programma's (eerste van die kolommen), en is gratis voor programma's om te gebruiken (tweede kolom). Het is een vrij esoterisch nummer, en niet iets waar je in de praktijk veel naar zou kijken.


2
2017-11-17 11:03



En wat betekent de eerste regel (mem-lijn) - Muahmmad Zeeshan
Dat u 12 GB RAM-geheugen hebt geïnstalleerd in het systeem, waarvan 11,5 GB wordt gebruikt en 0,5 GB of zo is momenteel niet gebruikt. Ongeveer 82 MB van het gebruikte geheugen wordt gebruikt voor buffers (netwerkverbindingen, enz.), Terwijl ongeveer 6,5 GB wordt gebruikt om kopieën van gegevens op schijf op te slaan, zodat gegevens niet opnieuw moeten worden gelezen als het opnieuw nodig is. - womble♦
@Muhammad: "82MB is gratis." - nee, 57MiB is gratis (maar dat doet er eigenlijk niet toe, zie mijn antwoord). "Nu betekent het allemaal dat het systeem zijn limieten heeft bereikt" - Nee, helemaal niet. Het systeem heeft 6.9GiB in gebruik voor caching, wat het gemakkelijk aan applicaties zal geven, dus er is veel ruimte. Ook is het swapgebruik erg laag (slechts ongeveer 50MiB). Als het geheugen krap begint te worden, zal het ruilgebruik toenemen. Momenteel gebruik je amper de helft van het RAM-geheugen dat je hebt. - sleske
Heb je overwogen om op een gegeven moment een nieuwe vraag te stellen? - womble♦
Ik ben het daar niet mee eens, de buffers / cache-regel is het daadwerkelijke vrije geheugen van het systeem en daarom het meest relevant als u wilt weten of het systeem ruimte biedt voor programma's. - eckes