Fui a travesEste artículo, que explica varios métodos para comprobar el uso de RAM. Sin embargo, no puedo conciliar los diferentes métodos y no sé cuál es el correcto.
Cuando inicio sesión por primera vez, aparece una pantalla como esta:
System information as of Sun Apr 28 21:46:58 UTC 2013
System load: 0.0 Processes: 76
Usage of /: 15.6% of 7.87GB Users logged in: 1
Memory usage: 41% IP address for eth0:
Swap usage: 0%
Esto me sugiere que estoy usando el 41% de mi RAM, lo cual parece bastante alto ya que el servidor no hace mucho. ¿O ese número se refiere a algo además de la RAM?
A continuación pruebo el free -m
método:
ubuntu@ip-:~$ free -m
total used free shared buffers cached
Mem: 590 513 76 0 67 315
-/+ buffers/cache: 130 459
Swap: 0 0 0
Según el gráfico explicativo del artículo, esto implica que tengo 130 MB de RAM usada y 459 MB de RAM libre, lo que sugiere que estoy usando aproximadamente el 22 % de mi RAM.
A continuación ejecuto top
:
top - 22:14:48 up 195 days, 21:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 97.7%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 604376k total, 525692k used, 78684k free, 69124k buffers
Swap: 0k total, 0k used, 0k free, 322740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24332 1864 976 S 0.0 0.3 0:08.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
Esto es lo más confuso, ya que el resumen me muestra usando 525MG de un total de 604M y, sin embargo, cuando se usa el comando interactivo "m" para ordenar por memoria superior, ¿el proceso superior solo usa el 0,3% de la memoria?
Finalmente, el ps
comando también parece mostrar muy poco uso de memoria:
root@ip-:/home/ubuntu# ps -o command,rss
COMMAND RSS
ps -o command,rss 788
sudo su root 1764
su root 1404
bash 2132
Me encantaría que alguien corrigiera cualquier malentendido que tenga y que esté creando estos aparentes conflictos.
¡Gracias!
EDITAR para Rahul
Salida de cat /proc/meminfo
:
MemTotal: 604376 kB
MemFree: 157564 kB
Buffers: 49640 kB
Cached: 231376 kB
SwapCached: 0 kB
Active: 290040 kB
Inactive: 97772 kB
Active(anon): 107672 kB
Inactive(anon): 4844 kB
Active(file): 182368 kB
Inactive(file): 92928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 106836 kB
Mapped: 22920 kB
Shmem: 5712 kB
Slab: 42032 kB
SReclaimable: 34016 kB
SUnreclaim: 8016 kB
KernelStack: 688 kB
PageTables: 3584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 302188 kB
Committed_AS: 242768 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7152 kB
VmallocChunk: 34359729008 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
Respuesta1
Sólo necesitas entender el concepto de memoria.
Según su salida de /proc/meminfo, solo necesita notar lo siguiente:
Amortiguadores:- Un búfer es algo que aún no se ha "escrito" en el disco. Representa cuánta RAM se dedica al bloque de disco de caché. "En caché" es similar a "Buffers", solo que esta vez almacena en caché las páginas de la lectura de archivos.
En caché:- Un caché es algo que ha sido "leído" del disco y almacenado para su uso posterior. Generalmente, puedes considerar el área de caché como otra RAM "libre", ya que se reducirá gradualmente si la aplicación exige más memoria.
Basta comprender que tanto "búfer" como "en caché" representan el tamaño de la memoria caché del sistema. Crecen o se reducen dinámicamente según lo solicite el mecanismo interno del kernel de Linux.
en Webhosting borran el caché usando el siguiente cmd: (principalmente configurado en cron):
sync && echo 3 > /proc/sys/vm/drop_caches
CitaEnlace
EDITAR para un requisito más, es decir, uso de memoria por usuario
#!/bin/bash
total_mem=0
printf "%-10s%-10s\n" User MemUsage
while read u m
do
[[ $old_user != $u ]] && { printf "%-10s%-0.1f\n" $old_user $total_mem; total_mem=0; }
total_mem=$(echo $m + $total_mem | bc);
old_user=$u
done < <(ps --no-headers -eo user,%mem| sort -k1)
#--EOF
Consulte el script anterior y avíseme si se muestra correctamente o no.
Respuesta2
Buena respuesta @RahulPatil.
Otro punto a considerar sobre ps o top es el siguiente
Esta herramienta [exmap] es más precisa que ps o top porque tiene en cuenta las bibliotecas compartidas que utilizan múltiples aplicaciones. Por ejemplo, si dos aplicaciones usan la misma biblioteca compartida, que ocupa 1 MB de memoria, ps mostrará ambas aplicaciones usando 1 MB de memoria adicional, mientras que exmap muestra más correctamente cada aplicación usando 500 KB. Esta mayor precisión es particularmente importante para evaluar entornos de escritorio como KDE y GNOME, que hacen un uso muy intensivo de bibliotecas compartidas entre aplicaciones.
A través deibm/developerworks/linux_memory
Dado que su pregunta se refiere a un servidor sin cabeza, no estoy seguro de cuánto doble informe superior o ps tendrá realmente.
Respuesta3
Temo que estemos pasando por alto lo obvio porque es un "por supuesto" para la mayoría de nosotros.
Jonah, perdóname si me equivoco, pero parece que tus preguntas no te has dado cuenta de que todos estos valores, en particular el uso de la CPU, normalmente variarán bastante de un segundo a otro.
El uso de la CPU puede pasar de un solo dígito al 100% instantáneamente cuando se inicia un nuevo proceso, pero rápidamente (con suerte) vuelve a caer al rango inferior al 50%.
El uso de la memoria cambia más lentamente, pero allí Linux intenta utilizar la memoria que no está en uso activo ejecutando procesos para "almacenar en caché" los accesos al disco. Por ejemplo, intenta predecir lo que será necesario leer del disco a continuación, como quizás el resto de un archivo grande después de leer una parte, y precargarlo en la caché. Algunos de los valores de uso de memoria incluyen tanto la memoria utilizada por los procesos como la memoria utilizada para el almacenamiento en caché. En un sistema que ha estado funcionando por un tiempo, los dos combinados probablemente serán del 80 al 90 % o más.
Considere también que el proceso que ejecuta para mostrar el uso, como por ejemplo top
, también utiliza CPU y memoria. Si escribiera un script con un bucle para informar el uso de la CPU continuamente, casi seguramente siempre mostraría el 100% porque el acto de informar el uso en sí (sin algunos sleep
retrasos) utiliza toda la CPU.