Het bepalen van de hoeveelheid geheugen die gebruikt wordt door een proces dat draait op een Linux-platform is een lastige stelling . De waarden voor geheugengebruik gerapporteerd door het besturingssysteem onnauwkeurig . Bij gebruik van de ingebouwde hulpprogramma's voorzien van Linux , is het belangrijk om het geheugengebruik statistieken en hoe ze berekend begrijpen . Hoe werkt een proces Gebruik Memory ? Wanneer een proces begint , het besturingssysteem wijst de hoeveelheid geheugen die het proces nodig heeft om te draaien . Elk proces heeft vier geheugen segmenten voor uitvoerbare code en data . Het segment " code " bevat de uitvoerbare instructies . Het segment " data " bevat statische en globale variabelen . De " stack " bevat lokale variabelen . De " heap " bevat dynamisch toegewezen objecten . Processen kunnen gebruik maken van gedeelde bibliotheken . Gedeelde bibliotheken worden alleen in het geheugen geladen eens , en alle processen met behulp van een bepaalde gedeelde bibliotheek zal dat exemplaar gebruiken . Wat Memory Statistieken doet Linux Report ? Virtueel geheugen is het totale bedrag van de adresruimte gereserveerd door het besturingssysteem om de werkwijze voor de code, data en stack . Het virtuele geheugen gerapporteerd door Linux bevat alle code , data en stack gereserveerd voor gebruik door een werkwijze , zowel fysiek geheugen en swap ruimte . Deze waarde omvat die wordt gebruikt door alle gedeelde bibliotheken die door het proces . De implicatie hiervan is dat gedeelde bibliotheken telt volledig naar de grootte van een bepaald proces . De resident geheugen van een proces gerapporteerd door Linux bevat alleen de hoeveelheid fysiek geheugen van het proces en de gedeelde bibliotheken er referenties het systeem op een gegeven moment . Segmenten verplaatst om ruimte te ruilen zijn niet inbegrepen . Net als met virtueel geheugen , resident geheugen omvat de ruimte die gebruikt wordt door gedeelde bibliotheken . Bekijken van een eenvoudig proces Snapshot met ps De ps hulpprogramma biedt een momentopname van processen op het systeem , de rapportage van de virtuele en resident geheugen , CPU en geheugen percentages , en een grote verscheidenheid van andere informatie . Om een enkel proces te onderzoeken , gebruikt u de volgende opties aan ps , waaronder vsz voor het virtuele geheugen , en rss voor de bewoner geheugen . Bijvoorbeeld , ps p 3746 o pid , rss , vsz , comm uitgangen voor proces- 3746 : PID RSS VSZ COMMAND3746 14.444 351.216 httpd2 Monitoring Processen met top De top hulpprogramma biedt een live weergave van de prestaties van het systeem . Om een of meer specifieke processen met top bewaken , gebruikt u de - p optie om een lijst met proces -id's te bieden . Bijvoorbeeld : top - p 3746,6100,28753,23176,25544 Na de lancering van de top , druk op de Command-toets " f " om toegang te krijgen tot het selectiescherm kolom . Zet de display voor de PID , VIRT , RES , SHR , SWAP , CODE , DATA , en COMMAND columns . Zoals geïllustreerd in de screenshot , de display toont nu de volgende geheugen statistieken : VIRT : Virtueel geheugen sizeRES : Resident geheugen sizeSHR : Gedeeld geheugen sizeSWAP : Geruilde sizeCODE : Code grootte in fysieke memoryDATA : Data plus stack grootte in fysiek geheugen gluren in /proc Gedetailleerde status van en proces geheugengebruik informatie is te vinden in /proc / /status en /proc / /smaps . Een verscheidenheid van informatie is opgenomen in /proc / /statuut , met inbegrip van deze memory statistieken : VmPeak : Peak virtueel geheugen sizeVmSize : Virtual memoryVmData : Data segment sizeVmStk : Stapel sizeVmExe : Executable segment sizeVmLib : Bibliotheek codegrootte /proc / /smaps geeft een zeer gedetailleerde weergave van een proces ' geheugen gebruiksmogelijkheden , uitgesplitst naar mapping gebroken voor code , stack , heap en elke gedeelde bibliotheek . De volledige output van smaps is nogal lang en moeilijk te verteren . U kunt gebruik maken van de Linux : Smaps Perl module te ontleden en verwerken van de smaps bestand . |