Estoy usando un servidor Linux que tiene 128 GB de memoria y 24 núcleos. Uso top para ver cuánto se usa. Su salida se pega al final de la publicación. Aquí hay dos preguntas:
(1) Veo que cada uno de los procesos en ejecución ocupa un porcentaje muy pequeño de memoria (% MEM no más de 0.2%, y la mayoría solo 0.0%), pero cómo la memoria total casi se usa como en la cuarta línea de salida ( "Mem: 130766620k total, 130161072k usado, 605548k gratis, 919300k tampones")? Parece poco probable que la suma del porcentaje de memoria utilizada en todos los procesos alcance casi el 100%, ¿no?
(2) ¿cómo entender el promedio de carga en la primera línea ("promedio de carga: 14.04, 14.02, 14.00")?
¡Gracias y saludos!
Editar:
¡Gracias!
También me gusta escuchar algunos números aproximados basados en el porcentaje de memoria utilizada para determinar si un servidor está muy cargado, ya que una vez me convertí en el que acosaba el servidor sin comprender la carga actual.
¿El intercambio se considera casi lo mismo que la memoria? Por ejemplo, cuando la memoria y el intercambio son casi del mismo tamaño, si la memoria se está agotando pero el intercambio aún está en gran parte libre, ¿puedo verlo como si el porcentaje utilizado de memoria + intercambio aún no fuera alto y ejecutara otro nuevo procesos?
¿Cómo considerarían juntos el uso de CPU o memoria (o memoria + intercambio)? ¿Te preocupa si alguno de ellos llega demasiado alto o ambos?
Salida de arriba:
$ top
arriba - 12:45:33 hasta 19 días, 23:11, 18 usuarios, promedio de carga: 14.04, 14.02, 14.00 Tareas: 484 en total, 12 corriendo, 472 durmiendo, 0 detenidos, 0 zombies CPU (s): 36.7% us, 19.7% sy, 0.0% ni, 43.6% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st Mem: 130766620k total, 130161072k usado, 605548k gratis, 919300k buffers Intercambio: 63111312k en total, 500556k usado, 62610756k gratis, 124437752k en caché PID USUARIO PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 6529 sanchez 18 -2 1075m 219m 13m S 100 0.2 13760: 23 MATLAB 13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3: 56.75 absurdo 13888 timothy 18-2 48336 37m 1204 R 100 0.0 2: 04.89 absurdo 14542 timothy 18-2 48336 37m 1196 R 100 0.0 1: 08.34 absurdo 14544 timothy 18-2 2888 2076 400 R 100 0.0 1: 06.14 reunir Datos 6183 sanchez 18 -2 1133m 195m 13m S 100 0.2 13676: 04 MATLAB 6795 sanchez 18 -2 1079m 210m 13m S 100 0.2 13734: 26 MATLAB 10178 timothy 18-2 48336 37m 1204 R 100 0.0 11: 33.93 absurdo 12438 timothy 18 -2 48336 37m 1216 R 100 0.0 5: 38.17 absurdo 13661 timothy 18 -2 48336 37m 1216 R 100 0.0 2: 44.13 absurdo 14098 timothy 18-2 48336 37m 1204 R 100 0.0 1: 58.31 absurdo 14335 timothy 18-2 48336 37m 1196 R 100 0.0 1: 08.93 absurdo 14765 timothy 18-2 48336 37m 1196 R 99 0.0 0: 32.57 absurdo 13445 timothy 18-2 48336 37m 1216 R 99 0.0 3: 01.37 absurdo 28990 raíz 20 0 0 0 0 S 2 0.0 65: 50.21 pdflush 12141 tim 18 -2 19380 1660 1024 R 1 0.0 0: 04.04 arriba 1240 raíz 15-5 0 0 0 S 0 0.0 16: 07.11 kjournald 9019 raíz 20 0 296 m 4460 2616 S 0 0.0 82: 19.51 kdm_greet 1 raíz 20 0 4028728592 S 0 0.0 0: 03.11 init 2 raíz 15-5 0 0 0 S 0 0.0 0: 00.00 kthreadd 3 raíz RT -5 0 0 0 S 0 0.0 0: 01.01 migración / 0 4 raíz 15-5 0 0 0 S 0 0.0 0: 08.13 ksoftirqd / 0 5 raíz RT -5 0 0 0 S 0 0.0 0: 00.00 perro guardián / 0 6 raíz RT -5 0 0 0 S 0 0.0 17: 27.31 migración / 1 7 raíz 15-5 0 0 0 S 0 0.0 0: 01.21 ksoftirqd / 1 8 raíz RT -5 0 0 0 S 0 0.0 0: 00.00 perro guardián / 1 9 raíz RT -5 0 0 0 S 0 0.0 10: 02.56 migración / 2 10 raíz 15-5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 2 11 raíz RT -5 0 0 0 S 0 0.0 0: 00.00 perro guardián / 2 12 raíz RT -5 0 0 0 S 0 0.0 4: 29.53 migración / 3 13 raíz 15-5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 3
fuente
Respuestas:
Para ver cuánta memoria está usando actualmente, ejecute
free -m
. Proporcionará resultados como:El valor 'usado' de la fila superior (1923) casi siempre coincidirá con el valor mem de la fila superior (2012). Dado que a Linux le gusta usar cualquier memoria de reserva para almacenar en caché los bloques de disco (515).
La figura clave utilizada para mirar es el valor utilizado de la fila de búferes / caché (1316). Esta es la cantidad de espacio que utilizan actualmente sus aplicaciones. Para un mejor rendimiento, este número debe ser menor que su memoria total (2012). Para evitar errores de falta de memoria, debe ser menor que la memoria total (2012) y el espacio de intercambio (3153).
Si desea ver rápidamente cuánta memoria es libre, mire el valor libre de la fila de búferes / caché (695). Esta es la memoria total (2012), la actual utilizada (1316). (2012 - 1316 = 696, no 695, esto solo será un problema de redondeo)
Este artículo sobre el promedio de carga utiliza una buena analogía de tráfico y es la mejor que he encontrado hasta ahora: Comprensión de la carga de CPU de Linux: ¿cuándo debería preocuparse? . En su caso, como la gente señaló:
Entonces, con un promedio de carga de 14.00 y 24 núcleos, su servidor está lejos de estar sobrecargado.
fuente
Los sistemas tipo Unix, incluido Linux, están diseñados para hacer el uso más eficiente posible de la RAM disponible. En términos muy generales, hay 3 estados en los que puede estar cada MB de RAM:
El tercer estado solo se usa como espacio de memoria virtual y está destinado a reasignarse cuando sea necesario, es decir, su memoria total disponible para programas es realmente Free + UsedforBuffers. Como tal, realmente no verá el espacio asignado al búfer que se muestra como asignado a ningún proceso específico.
Su pregunta de promedio de carga es un poco más interesante, ya que puede malinterpretarse fácilmente. Para la historia completa, vea este artículo de linuxjournal . El mejor resumen es una cita directa del artículo,
Lo que significa que puede pensar en su promedio de carga como (# de procesos en ejecución) + (# de procesos esperando en IO). Teniendo en cuenta que en cualquier momento puede tener un número de procesos $ CORE en ejecución, diría que su promedio de carga de 14 es bastante bajo.
fuente
Desde la
sar
página del manual:Desde la
uptime
página del manual:fuente
top
básicamente inútil, generalmente manteniendo la mayor parte de la memoria de la máquina asignada para varios usos cuando no es requerida por un proceso de usuario.fuente
El promedio de carga es una gran cosa. Le permite comprender lo que sucede más allá del 100% de utilización, básicamente: http://en.wikipedia.org/wiki/Load_%28computing%29
fuente