GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo calcular el uso de memoria en Linux usando sar, ps y gratis

Es importante encontrar el proceso o la aplicación que acapara la memoria del sistema en caso de un problema de rendimiento. La publicación enumera algunos de los comandos básicos para calcular el uso de la memoria en un sistema Linux general.

1. Calcule el uso de memoria usando 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

Para calcular la memoria libre a partir del valor medio, utilice la siguiente fórmula:

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

Usando el ejemplo anterior:

1772665 + 382184 + 23831757 = 25986606KB

Eso es alrededor de 24,78 GB de memoria libre.

2. Calcule el uso de la memoria usando el comando libre

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

Del ejemplo anterior, para obtener memoria libre en el uso del sistema:

-/+ buffers/cache ==> free column

La columna gratuita informa 25370 MB para que coincida con el cálculo de salida de sar también (teniendo en cuenta que en SAR se usó el valor promedio)

Para obtener memoria utilizada en el uso del sistema:

-/+ buffers/cache ==> used column

En nuestro caso la memoria utilizada es de 6736MB.

3. Encuentre los 10 usuarios principales que consumen más memoria en el sistema en porcentaje

Utilice una sintaxis de shell simple que utilice el 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

De la observación del ejemplo anterior, root tiene 349 procesos que consumen el 3,3 % de la memoria, el usuario oracle tiene 29 procesos que consumen el 4 % de la memoria, el usuario apache1 tiene 12 procesos que consumen alrededor del 4,8 % de la memoria, en total alrededor del 12 %. También se puede ver un valor de alrededor del 12 % en la columna "confirmar" de sar.

4. Compruebe los 10 principales procesos que consumen RSS (Tamaño del conjunto residente)

Utilice una sintaxis de shell simple que utilice el 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 primera columna es RSS , el segundo es PID , el tercero es USUARIO y el cuarto es Comando ejecutado .

RSS El valor es el más importante aquí, ya que muestra cuánta memoria ha asignado realmente el proceso en KB , no utilice VSZ valor que calcula la memoria "solicitada" por proceso, ya que cada proceso está asignando "sobrecarga" que se presenta por el valor VSZ, donde RSS informa la verdadera asignación de memoria por proceso.

Después del cálculo de la salida RSS, el 'usado ' la memoria se puede obtener y comparar con -/+ buffers/cache – columna usada de la salida de free comando:tanto el RSS como la salida del comando gratuito deben coincidir.


Linux
  1. Uso de memoria de Linux

  2. Cómo eliminar búferes de memoria y caché en Linux

  3. Linux:¿determinar correctamente el uso de memoria en Linux?

  4. Cómo verificar el tamaño total de RAM y el uso de memoria en Linux

  5. limitando el uso de memoria en R bajo Linux

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo ejecutar aplicaciones de Linux en Windows 10 y 11 usando WSL

Cómo clonar y restaurar una partición de Linux usando el comando dd

Cómo visualizar el uso del disco en Linux usando Baobab

¿Cómo interpretar el uso de memoria superior/htop?

Cómo encontrar los principales procesos en ejecución por memoria y uso de CPU en Linux