Het bepalen van de hoeveelheid geheugen die gebruikt door een proces dat wordt uitgevoerd op een Linux-platform is een lastige propositie. De waarden voor geheugengebruik gemeld door het besturingssysteem zijn onnauwkeurig. Bij het gebruik van de ingebouwde hulpprogramma's voorzien van Linux, is het belangrijk om te begrijpen van de geheugen-gebruiksstatistieken en hoe deze zijn berekend.
Hoe gebruikt een proces geheugen?
Wanneer een proces wordt gestart, wijst het besturingssysteem de hoeveelheid geheugen die het proces vereist te lopen. Elk proces heeft vier geheugensegmenten voor uitvoerbare code en gegevens. De "code"-segment bevat de uitvoerbare instructies. De "" gegevenssegment bevat statische en algemene variabelen. De "stack" bevat lokale variabelen. De "heap" bevat dynamisch toegewezen objecten. Processen kunnen gebruik maken van gedeelde bibliotheken. Gedeelde bibliotheken slechts eenmaal in het geheugen zijn geladen, en alle processen met behulp van een bepaalde gedeelde bibliotheek die kopie zal gebruiken.
Wat geheugen statistieken rapporteert Linux?
Virtueel geheugen is het totale bedrag van de adresruimte gereserveerd door het besturingssysteem aan het proces voor de code, de gegevens en de stack. De grootte van het virtuele geheugen gerapporteerd door Linux bevat alle code, gegevens en stackruimte gereserveerd voor gebruik door een proces, op zowel fysiek geheugen en swap ruimte. Deze waarde omvat ruimte gebruikt door alle gedeelde bibliotheken gebruikt door het proces. De implicatie hiervan is dat de gedeelde bibliotheken volledige voor de grootte van een bepaald proces meetellen.
De geheugengrootte van de ingezeten van een proces gemeld door Linux bevat alleen de hoeveelheid fysiek geheugen die het proces en de gedeelde bibliotheken die het verwijzingen op een bepaald moment gebruikt. Segmenten verhuisde naar swap ruimte zijn niet inbegrepen. Zoals met grootte van virtueel geheugen omvat resident geheugengrootte de ruimte gebruikt door gedeelde bibliotheken.
Een momentopname van een eenvoudig proces met ps weergeven
Het hulpprogramma ps geeft een overzicht van de processen die worden uitgevoerd op het systeem, rapportage van de grootte van het virtuele en ingezeten geheugen, CPU- en geheugengebruik percentages en allerlei andere informatie. Gebruik de volgende opties aan ps, waaronder vsz voor de grootte van virtueel geheugen en rss voor de grootte van de ingezeten geheugen te onderzoeken van een enkel proces. Bijvoorbeeld,
PS p 3746 o comm, pid, rss, vsz
uitgangen voor proces 3746:
OPDRACHT VAN DE VSZ PID RSS
3746 14444 351216 httpd2
Toezicht processen met top
Het bovenste hulpprogramma biedt een actuele weergave van de systeemprestaties. Als u wilt controleren van een of meer specifieke processen met top, de optie--p een lijst van de proces-id's te verstrekken. Bijvoorbeeld:
Hoofdpagina -p 3746,6100,28753,23176,25544
Na de lancering van top, sloeg de command-toets "f" voor toegang tot de kolom selectiescherm. De weergave voor de PID, VIRT, RES, SHR, SWAP, CODE, gegevens en opdracht kolommen inschakelen. Zoals geïllustreerd in het het schermschot, verschijnt op het display nu de volgende geheugen statistieken:
VIRT: grootte van virtueel geheugen
RES: Resident geheugengrootte
SHR: Gedeelde geheugengrootte
SWAP: Verwisseld grootte
CODE: Codegrootte in het fysieke geheugen
GEGEVENS: De gegevens plus grootte in het fysieke geheugen van de stapel
Gluren in/proc
Gedetailleerde status en proces geheugen gebruiksinformatie kan worden gevonden in /proc/
parameter en /proc/ /smaps. Een verscheidenheid aan informatie is opgenomen in de /proc/ parameter, met inbegrip van deze statistieken geheugen: VmPeak: Grootte van piek virtueel geheugen
VmSize: virtueel geheugen
VmData: Data segmentgrootte
VmStk: Stackgrootte
VmExe: Uitvoerbare segmentgrootte
VmLib: Bibliotheek codegrootte/proc/
/smaps biedt een zeer gedetailleerde weergave van een procesgeheugen usages, uitgesplitst per toewijzing voor de code, stapelen, heap en elke gedeelde bibliotheek. De volledige output van smaps is nogal lang en moeilijk te verteren. U kunt de Linux:Smaps Perl module parseren en het smaps-bestand verwerken.