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 .
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.