GNU/Linux >> Tutoriels Linux >  >> Linux

Comment calculer l'utilisation de la mémoire sous Linux en utilisant sar, ps et free

Il est important de trouver le processus ou l'application monopolisant la mémoire du système en cas de problème de performances. Le message répertorie quelques-unes des commandes de base pour calculer l'utilisation de la mémoire sur un système Linux général.

1. Calculer l'utilisation de la mémoire à l'aide du 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

Pour calculer la mémoire libre à partir de la valeur moyenne, utilisez la formule ci-dessous :

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

En utilisant l'exemple ci-dessus :

1772665 + 382184 + 23831757 = 25986606KB

Cela représente environ 24,78 Go de mémoire libre.

2. Calculer l'utilisation de la mémoire à l'aide de la commande gratuite

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

Dans l'exemple ci-dessus, pour obtenir de la mémoire libre sur le système, utilisez :

-/+ buffers/cache ==> free column

La colonne gratuite rapporte 25 370 Mo afin de correspondre également au calcul de la sortie sar (en gardant à l'esprit que la valeur moyenne du SAR a été utilisée)

Pour utiliser la mémoire lors de l'utilisation du système :

-/+ buffers/cache ==> used column

Dans notre cas, la mémoire utilisée est de 6736 Mo.

3. Trouvez les 10 meilleurs utilisateurs qui consomment plus de mémoire sur le système en pourcentage

Veuillez utiliser une syntaxe shell simple qui utilise la commande 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

D'après l'observation de l'exemple ci-dessus, root a 349 processus qui occupent 3,3 % de la mémoire, l'utilisateur oracle a 29 processus qui occupent 4 % de la mémoire, l'utilisateur apache1 a 12 processus qui consomment environ 4,8 % de la mémoire, soit au total environ 12 %. Une valeur d'environ 12 % peut également être vue dans la colonne sar "commit".

4. Vérifiez les 10 principaux processus qui consomment RSS (Taille de l'ensemble résident)

Veuillez utiliser une syntaxe shell simple qui utilise la commande 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 première colonne est RSS , le second est PID , le troisième est USER et le quatrième est Command Executed .

RSS la valeur est la plus importante ici car elle montre la quantité de mémoire que le processus a réellement allouée en Ko , veuillez ne pas utiliser VSZ valeur qui calcule la mémoire « demandée » par processus, car chaque processus alloue une « surcharge » qui est présentée par la valeur VSZ, où RSS signale la véritable allocation de mémoire par processus.

Après le calcul de la sortie RSS, le "utilisé ' la mémoire peut être obtenue et comparée à -/+ tampons/cache - colonne utilisée de la sortie de free command — RSS et la sortie de la commande free doivent correspondre.


Linux
  1. Utilisation de la mémoire Linux

  2. Comment supprimer les tampons de mémoire et le cache sous Linux

  3. Linux - Détermination correcte de l'utilisation de la mémoire sous Linux ?

  4. Comment enregistrer la consommation de mémoire sous Linux ?

  5. Comment trouver l'utilisation de la mémoire utilisateur sous Linux

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment exécuter des applications Linux sur Windows 10 et 11 à l'aide de WSL

Comment cloner et restaurer une partition Linux à l'aide de la commande dd

Comment visualiser l'utilisation du disque sous Linux avec Baobab

Comment interpréter l'utilisation de la mémoire Top/htop ?

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux