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
sarpágina del manual:El promedio de carga se calcula como el número promedio de ejecutando tareas (estado R), y el número de tareas en ininterrumpible dormir (estado D) durante el intervalo especificado.Desde la
uptimepágina del manual:Los promedios de carga del sistema son el número promedio de procesos que son en un estado ejecutable o ininterrumpible. Un proceso en un estado ejecutable está usando la CPU o está esperando usar la CPU. Un proceso en unin‐ El estado interrumpible está esperando algún acceso de E / S, por ejemplo, esperando el disco. Los promedios se toman durante los tres intervalos de tiempo. Promedios de carga no están normalizados para el número de CPU en un sistema, por lo que una carga promedio edad de 1 significa que se carga un solo sistema de CPU todo el tiempo mientras está en un 4 Sistema de CPU significa que estuvo inactivo el 75% del tiempo.fuente
topbá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