Vraag Hoe het geheugengebruik en het laadgemiddelde in linux-server te begrijpen


Ik gebruik een linux-server met 128 GB geheugen en 24 kernen. Ik gebruik boven om te zien hoeveel het wordt gebruikt. De uitvoer wordt geplakt aan het einde van de post. Hier zijn twee vragen:

(1) Ik zie dat elk van de lopende processen een heel klein percentage van het geheugen in beslag neemt (% MEM niet meer dan 0,2%, en de meeste slechts 0,0%), maar hoe het totale geheugen bijna wordt gebruikt zoals in de vierde regel van de uitvoer ( "Mem: 130766620k totaal, 130161072k gebruikt, 605548k gratis, 919300k-buffers")? De som van het gebruikte geheugenpercentage over alle processen lijkt bijna geen 100% te bereiken, nietwaar?

(2) hoe het belastingsgemiddelde op de eerste regel te begrijpen ("laadgemiddelde: 14.04, 14.02, 14.00")?

Bedankt en groeten!

Bewerk:

Bedankt!

Ik hoor ook graag wat ruwe cijfers op basis van het gebruikte geheugenpercentage om te bepalen of een server zwaar is geladen, omdat ik ooit degene was die de server heeft ingepakt zonder de huidige belasting te begrijpen.

Wordt swap beschouwd als bijna hetzelfde als geheugen? Als bijvoorbeeld het geheugen en de verwisseling bijna dezelfde grootte hebben, als het geheugen bijna opraakt maar de wissel nog steeds grotendeels gratis is, mag ik het dan gewoon bekijken alsof het gebruikte percentage geheugen + wissel nog steeds niet hoog is en andere nieuwe gebruiken processen?

Hoe zou u het gebruik van CPU of geheugen (of memory + swap) samen overwegen? Maak je je zorgen als een van beide te hoog wordt of beide?

Output van top:

$ top

 
top - 12:45:33 up 19 dagen, 23:11, 18 gebruikers, laad gemiddeld: 14.04, 14.02, 14.00
Taken: 484 totaal, 12 rennen, 472 slapen, 0 gestopt, 0 zombie
Cpu (s): 36,7% wij, 19,7% sy, 0,0% ni, 43,6% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: 130766620k totaal, 130161072k gebruikt, 605548k gratis, 919300k-buffers
Ruil: 63111312k totaal, 500556k gebruikt, 62610756k gratis, 124437752k in cache opgeslagen

  PID GEBRUIKER PR NI VIRT RES SHR S% CPU% MEM TIJD + COMMAND
 6529 sanchez 18 -2 1075m 219m 13m S 100 0.2 13760: 23 MATLAB
13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3: 56.75 absurditeit
13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2: 04.89 absurditeit
14542 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.34 absurditeit
14544 timothy 18 -2 2888 2076 400 R 100 0.0 1: 06.14 gatherData
 6183 sanchez 18 -2 1133m 195m 13m S 100 0.2 13676: 04 MATLAB
 6795 sanchez 18 -2 1079 m 210 m 13 m S 100 0.2 13734: 26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11: 33.93 absurditeit
12438 timothy 18 -2 48336 37m 1216 R 100 0.0 5: 38.17 absurditeit
13661 timothy 18 -2 48336 37m 1216 R 100 0.0 2: 44.13 absurditeit
14098 timothy 18 -2 48336 37m 1204 R 100 0.0 1: 58.31 absurditeit
14335 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.93 absurditeit
14765 timothy 18 -2 48336 37m 1196 R 99 0.0 0: 32.57 absurditeit
13445 timothy 18 -2 48336 37m 1216 R 99 0.0 3: 01.37 absurditeit
28990 root 20 0 0 0 0 S 2 0.0 65: 50.21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0.0 0: 04.04 top
 1240 root 15 -5 0 0 0 S 0 0.0 16: 07.11 kjournald
 9019 root 20 0 296m 4460 2616 S 0 0.0 82: 19.51 kdm_greet
    1 wortel 20 0 4028 728 592 S 0 0,0 0: 03.11 init
    2 root 15 -5 0 0 0 S 0 0.0 0: 00.00 kthreadd
    3 root RT -5 0 0 0 S 0 0.0 0: 01.01 migratie / 0
    4 root 15 -5 0 0 0 S 0 0,0 0: 08.13 ksoftirqd / 0
    5 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 0
    6 root RT -5 0 0 0 S 0 0.0 17: 27.31 migratie / 1
    7 wortel 15 -5 0 0 0 S 0 0.0 0: 01.21 ksoftirqd / 1
    8 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 1
    9 root RT -5 0 0 0 S 0 0.0 10: 02.56 migratie / 2
   10 root 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 2
   11 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 2
   12 root RT -5 0 0 0 S 0 0.0 4: 29.53 migratie / 3
   13 wortel 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 3

54
2017-09-22 16:59


oorsprong


Zie dit voor een goed antwoord over het geheugen. serverfault.com/questions/38065/#38074 - Zoredache
En dit antwoord voor een snel overzicht van het gemiddelde van de belasting (of deze lang gelezen voor de details). - Nickolay


antwoorden:


(1) Ik zie dat elk van de lopende processen een heel klein percentage van het geheugen in beslag neemt (% MEM niet meer dan 0,2%, en de meeste slechts 0,0%), maar hoe het totale geheugen bijna wordt gebruikt zoals in de vierde regel van de uitvoer ( "Mem: 130766620k totaal, 130161072k gebruikt, 605548k gratis, 919300k-buffers")? De som van het gebruikte geheugenpercentage over alle processen lijkt bijna geen 100% te bereiken, nietwaar?

Om te zien hoeveel geheugen u momenteel gebruikt, voert u uit free -m. Het levert uitvoer zoals:

             totale gebruikte gratis gedeelde buffers in de cache
Mem: 2012 1923 88 0 91 515
- / + buffers / cache: 1316 695
Ruilen: 3153 256 2896

De waarde van de bovenste rij 'gebruikt' (1923) zal bijna altijd overeenkomen met de bovenste rij mem-waarde (2012). Omdat Linux graag een extra geheugen gebruikt om schijfblokken te cachen (515).

De belangrijkste gebruikte waarde om naar te kijken, is de gebruikte buffers / cache rijwaarde (1316). Dit is de hoeveelheid ruimte die uw toepassingen momenteel gebruiken. Voor de beste prestaties moet dit aantal kleiner zijn dan uw totale (2012) geheugen. Om geheugenfouten te voorkomen, moet deze minder zijn dan het totale geheugen (2012) en de swapspace (3153).

Als u snel wilt zien hoeveel geheugen vrij is, kijkt u naar de buffervrije / cacherijvrije waarde (695). Dit is het totale geheugen (2012) - het daadwerkelijk gebruikte (1316). (2012 - 1316 = 696, niet 695, dit is slechts een afrondingsprobleem)

(2) hoe het belastingsgemiddelde op de eerste regel te begrijpen ("laadgemiddelde: 14.04, 14.02, 14.00")?

Dit artikel over laadgemiddelde maakt gebruik van een goede verkeersanalogie en is de beste die ik tot nu toe heb gevonden: Linux CPU-belasting begrijpen - wanneer zou u zich zorgen moeten maken?. In jouw geval, zoals mensen al zeiden:

Op een multiprocessorsysteem is de belasting relatief ten opzichte van het aantal beschikbare processorcores. Het merk "100% gebruik" is 1,00 op een single-core systeem, 2,00, op een dual-core, 4,00 op een quad-core, etc.

Dus, met een laadgemiddelde van 14.00 en 24 kernen, is je server nog lang niet overladen.


54
2017-09-22 21:33



+1 interessante link, bedankt! - Marco Demaio


Unix-achtige systemen, waaronder linux, zijn ontworpen om het meest efficiënte gebruik van het beschikbare RAM mogelijk te maken. In zeer algemene termen zijn er 3 toestanden die elke MB RAM kan bevatten:

  1. Gratis
  2. Gebruikt door een proces
  3. Gebruikt voor buffers

De derde status wordt alleen gebruikt als krasruimte en is bedoeld om opnieuw toegewezen te worden wanneer dat nodig is, d.w.z. uw totale beschikbare geheugen voor programma's is echt gratis + gebruikt voor drukkers. Als zodanig ziet u niet echt dat de buffer toegewezen ruimte wordt weergegeven als toegewezen aan een specifiek proces.

Uw gemiddelde vraag is iets interessanter, omdat deze gemakkelijk verkeerd kan worden geïnterpreteerd. Zie dit voor het volledige verhaal linuxjournal-artikel. De beste samenvatting is een rechtstreeks citaat uit het artikel,

De gemiddelde belastingberekening wordt het best beschouwd als een voortschrijdend gemiddelde van processen in de loop van Linux, gemarkeerd als actief of niet onderbroken

Dit betekent dat je het gemiddelde van de belasting kunt zien als (# lopende processen) + (aantal processen dat op IO wacht). Als je in gedachten houdt dat je op elk moment $ CORE aantal processen kunt uitvoeren, zou ik zeggen dat je gemiddelde belasting van 14 laag is.


16
2017-09-22 17:39



Bedankt! Wat is het gebruikte percentage van het geheugen (of memory + swap) dat als zwaar geladen wordt beschouwd en beter om geen nieuwe processen uit te voeren? Kijk je naar geheugen of memory + swap? Wordt de gebruikte swap boven in de swap weergegeven? Wat betreft het gemiddelde van de CPU-belasting, meet u de werkelijke belasting door "gemiddelde belasting / kernnummer"? Hoeveel zou het voor u betekenen dat de server zwaar beladen is? Bedankt en groeten! - Tim
Load is slechts een indicator. Over het algemeen is een lading groter dan kernen een slechte zaak. Over het algemeen is een hoog percentage van het gebruikte geheugen een slechte zaak. Het is geen binaire waarde dat je kunt zeggen 'zoveel is goed'. Als het RAM-geheugen vol is, hebt u niet genoeg om meer processen uit te voeren. Als je niet opraakt, heb je genoeg. Het is erg afhankelijk van de specifieke kenmerken van uw situatie. - Cian


Van de sar man pagina:

       Het laadgemiddelde wordt berekend als het gemiddelde aantal runnable of
       lopende taken (R-status) en het aantal taken in niet-onderbreekbare
       slaap (D-toestand) gedurende het gespecificeerde interval.

Van de uptime man pagina:

       Systeembelastingsgemiddelden is het gemiddelde aantal processen dat ook
       in een uitvoerbare of ononderbroken toestand. Een proces in een uitvoerbare staat
       is ofwel de CPU aan het gebruiken of wacht om de CPU te gebruiken. Een proces in
       in de rusttoestand wacht op enige I / O-toegang, bijvoorbeeld wachten op schijf.
       De gemiddelden worden genomen over de drie tijdsintervallen. Laad gemiddelden
       zijn niet genormaliseerd voor het aantal CPU's in een systeem, dus een belastinggemiddelde
       leeftijd van 1 betekent dat een enkel CPU-systeem de hele tijd op een 4 wordt geladen
       CPU-systeem betekent dat het 75% van de tijd inactief was.

4
2017-09-22 17:36





  1. Linux beheert al geruime tijd zijn geheugen op een manier die die lijn maakt top in principe nutteloos, waarbij het grootste deel van het geheugen van de machine wordt gereserveerd voor verschillende doeleinden, wanneer dit niet door een gebruikersproces wordt vereist.
  2. Het laadgemiddelde is het gemiddelde aantal processen dat wordt uitgevoerd of dat wacht om te worden uitgevoerd. Het heeft meestal een sterke negatieve correlatie met de latentie / reactietijd van het systeem, dus u wilt het zo laag mogelijk houden. Omdat elk van je CPU's op een bepaald moment iets kan uitvoeren, lijkt het op 14 behoorlijk goed te gaan.

3
2017-09-22 17:02



Bedankt! Met betrekking tot 1, bedoelt u dat sommige processen niet bovenaan verschijnen, maar veel geheugen gebruiken? Of dat de vierde regel van de uitvoer over het geheugen ("Mem: 130766620k totaal, 130161072k gebruikt, 605548k gratis, 919300k-buffers") misleidend is, moet ik kijken naar de som van het percentage geheugen dat wordt gebruikt door alle processen in de top en in mijn geval Ik kan veilig nieuwe, geheugenvergende processen uitvoeren? - Tim
Zoals andere antwoorden hebben aangegeven, moet het gemiddelde van de belasting worden vergeleken met het aantal processors, dus 14 is niet zo veel op een 24-kernsysteem. Het zou ongeveer 14/24 = 0,58 zijn op een single-core systeem (nou ja soort). - David Z
@Tim: ik bedoel de laatste. - chaos


Het laadgemiddelde is geweldig. Het laat je begrijpen wat er gebeurt buiten het 100% gebruik, eigenlijk: http://en.wikipedia.org/wiki/Load_%28computing%29


0
2017-09-22 20:54