GNU/Linux >> Linux Esercitazione >  >> Linux

Come calcolare l'utilizzo della memoria in Linux usando sar, ps e free

È importante trovare la memoria di monopolizzazione del processo o dell'applicazione del sistema in caso di problemi di prestazioni. Il post elenca alcuni dei comandi di base per calcolare l'utilizzo della memoria su un sistema Linux generale.

1. Calcola l'utilizzo della memoria utilizzando SAR

# sar -r 1 10
Linux 2.6.32-504.el6.x86_64 (geeklab) 	03/05/2018 	_x86_64_	(16 CPU)

10:17:41 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:17:42 AM   1772488  31104712     94.61    382184  23831756  11675188     11.86
10:17:43 AM   1777348  31099852     94.59    382184  23831756  11675188     11.86
10:17:44 AM   1778412  31098788     94.59    382184  23831756  11675188     11.86
10:17:45 AM   1776720  31100480     94.60    382184  23831756  11675072     11.86
10:17:46 AM   1777932  31099268     94.59    382184  23831760  11675072     11.86
10:17:47 AM   1780848  31096352     94.58    382184  23831760  11675072     11.86
10:17:48 AM   1774460  31102740     94.60    382184  23831760  11675644     11.86
10:17:49 AM   1740080  31137120     94.71    382184  23831760  11717568     11.91
10:17:50 AM   1773608  31103592     94.61    382184  23831708  11675076     11.86
10:17:51 AM   1774752  31102448     94.60    382184  23831796  11675076     11.86
Average:      1772665  31104535     94.61    382184  23831757  11679414     11.87

Per calcolare la memoria libera dal valore medio, utilizzare la formula seguente:

kbmemfree + kbbuffers + kbcached = actual free memory on the system

Utilizzando l'esempio sopra:

1772665 + 382184 + 23831757 = 25986606KB

Sono circa 24,78 GB di memoria libera.

2. Calcola l'utilizzo della memoria usando il comando gratuito

# free -m
             total       used       free     shared    buffers     cached
Mem:         32106      30382       1723       3031        373      23273
-/+ buffers/cache:       6736      25370
Swap:        63999          2      63997

Dall'esempio sopra, per ottenere memoria libera sul sistema usa:

-/+ buffers/cache ==> free column

La colonna gratuita riporta 25370 MB in modo che corrisponda anche al calcolo dell'output sar (tenendo presente che in SAR è stato utilizzato il valore medio)

Per utilizzare la memoria utilizzata sul sistema:

-/+ buffers/cache ==> used column

Nel nostro caso la memoria utilizzata è 6736 MB.

3. Trova i primi 10 utenti che stanno consumando più memoria sul sistema in percentuale

Si prega di utilizzare una semplice sintassi della shell che utilizza il comando ps:

# ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f\t%.2f\n",num[user], user, cpu[user], mem[user]) }'
NPROC	USER	  CPU	MEM
29	oracle	  0.10	4.00
1	ntp	  0.00	0.00
1	rpc	  0.00	0.00
5	user	  0.00	0.00
1	dbus	  0.00	0.00
1	mysql	  0.00	0.30
12	daemon	  0.00	0.60
2	postfix	  0.00	0.00
12	apache1	  2.40	4.80
1	rpcuser	  0.00	0.00
349	root	  7.70	3.30

Dall'osservazione dell'esempio sopra, root ha 349 processi che occupano il 3,3% della memoria, l'utente Oracle ha 29 processi che occupano il 4% della memoria, l'utente apache1 ha 12 processi che consumano circa il 4,8% della memoria, che in totale circa il 12%. Il valore di circa il 12% può essere visto anche sulla colonna "commit" di sar.

4. Controlla i 10 principali processi che stanno consumando RSS ( Resident Set Size )

Si prega di utilizzare una semplice sintassi della shell che utilizza il comando ps:

# ps -e -orss,pid=,user=,args=, | sort -b -k1,1n | pr -TW$COLUMNS| tail -10
74336   5509 root     /opt/perf/bin/perfalarm
77212   8389 oracle   /grid/CRS/bin/ohasd.bin reboot
78216   9731 root     /opt/OV/lbin/agtrep/agtrep -start
96768   9808 root     /opt/OV/hpcs/hpsensor
108580 12073 root     /usr/lib/systemd/systemd-journald
136260 76477 root     storapid start -name storapid
178316  5350 root     /opt/OV/bin/oacore oacore /var/opt/OV/conf/oa/PipeDefinitions/oacore.xml
186168 10367 oracle   /grid/CRS/bin/oraagent.bin
1013484 31562 root    vxconfigd -x syslog
1317360 76463 root    vxencryptd

La prima colonna è RSS , il secondo è PID , il terzo è UTENTE e il quarto è Comando eseguito .

RSS value è il più importante qui in quanto mostra quanta memoria il processo ha effettivamente allocato in KB , non utilizzare VSZ valore che calcola la memoria "richiesta" per processo, poiché ogni processo sta allocando "overhead" che è presentato dal valore VSZ, dove RSS riporta la vera allocazione della memoria per processo.

Dopo il calcolo dell'output RSS, "utilizzato ' la memoria può essere ottenuta e confrontata con -/+ buffer/cache – colonna utilizzata dall'output di free comando — sia l'RSS che l'output del comando gratuito dovrebbero corrispondere.


Linux
  1. Utilizzo della memoria di Linux

  2. Come eliminare i buffer di memoria e la cache in Linux

  3. Linux:determinare correttamente l'utilizzo della memoria in Linux?

  4. Come registrare il consumo di memoria su Linux?

  5. Come viene riportato l'utilizzo della memoria in Linux?

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Come eseguire app Linux su Windows 10 e 11 utilizzando WSL

Come clonare e ripristinare la partizione Linux usando il comando dd

Come visualizzare l'utilizzo del disco su Linux usando Baobab

Come interpretare l'utilizzo della memoria top/htop?

Come trovare i migliori processi in esecuzione in base all'utilizzo di memoria e CPU in Linux