58 votos

Cómo entender el uso de memoria y de la carga promedio en servidor linux

Estoy utilizando un servidor linux que tiene 128GB de memoria y 24 núcleos. Yo uso la parte superior para ver cuánto se utiliza. Su salida se pega al final del post. Aquí hay dos preguntas:

(1) veo que cada uno de los procesos en ejecución, que ocupa un porcentaje muy pequeño de la memoria (%MEM no más de 0,2%, y la mayoría sólo 0.0%), pero, ¿cómo la memoria total es de casi utilizados como en la cuarta línea de salida ("Mem: 130766620k total, 130161072k utilizado, 605548k libre, 919300k buffers")? La suma de utilizar el porcentaje de la memoria a través de todos los procesos que se parece poco probable alcanzar 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 gustaría escuchar algunas aproximada de números basados en el porcentaje de memoria utilizado para determinar si un servidor está muy cargado, ya que una vez que se convirtió en uno de los que cramed el servidor sin la comprensión de la corriente de carga.

Es swap considerado como casi el mismo que el de la memoria? Por ejemplo, cuando la memoria swap y son casi del mismo tamaño, si la memoria está casi acabando, pero el swap es todavía en gran parte libre, puede que acabo de ver es como si se utiliza el porcentaje de memoria + swap no es todavía alta y ejecutar otros procesos nuevos?

Cómo sería para ti juntos de la CPU o de la memoria (memoria o + swap) de uso? ¿Se preocupan, si uno de ellos llega a ser demasiado alta o ambos?

Salida de la parte superior:

$ arriba

top - 12:45:33 hasta 19 días, 23:11, el 18 de usuarios, promedio de carga: 14.04, 14.02, de las 14.00
Tareas: 484 total, 12 en ejecución, 472 dormir, 0 detuvo, 0 zombie
Cpu(s): el 36,7% de nosotros, el 19,7%sy, 0.0%ni, 43.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%san
Mem: 130766620k total, 130161072k utilizado, 605548k libre, 919300k búferes
Swap: 63111312k total, 500556k utilizado, 62610756k libre, 124437752k en caché

 PID DE USUARIO PR NI VIRT RES SHR S %CPU %MEM TIEMPO+ COMANDO
 6529 sánchez 18 -2 1075m 219m 13m S 100 0.2 13760:23 de MATLAB
13210 timoteo 18 -2 48336 37m 1216 R 100 0.0 3:56.75 absurdo
13888 timoteo 18 -2 48336 37m 1204 R 100 0.0 2:04.89 absurdo
14542 timoteo 18 -2 48336 37m 1196 R 100 0.0 1:08.34 absurdo
14544 timoteo 18 -2 2888 2076 400 R 100 0.0 1:06.14 gatherData
 6183 sánchez 18 -2 1133m 195m 13m S 100 0.2 13676:04 MATLAB
 6795 sánchez 18 -2 1079m 210m 13m S 100 0.2 13734:26 de MATLAB
10178 timoteo 18 -2 48336 37m 1204 R 100 0.0 11:33.93 absurdo 
12438 timoteo 18 -2 48336 37m 1216 R 100 0.0 5:38.17 absurdo
13661 timoteo 18 -2 48336 37m 1216 R 100 0.0 2:44.13 absurdo
14098 timoteo 18 -2 48336 37m 1204 R 100 0.0 1:58.31 absurdo
14335 timoteo 18 -2 48336 37m 1196 R 100 0.0 1:08.93 absurdo
14765 timoteo 18 -2 48336 37m 1196 R 99 0.0 0:32.57 absurdo
13445 timoteo 18 -2 48336 37m 1216 R 99 0.0 3:01.37 absurdo
28990 root 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 superior
 1240 root 15 -5 0 0 0 S 0 0.0 16:07.11 kjournald
 9019 root 20 0 296m 4460 2616 S 0 0.0 82:19.51 kdm_greet
 root 1 20 0 4028 728 592 S 0 0.0 0:03.11 init
 2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
 3 root RT -5 0 0 0 S 0 0.0 0:01.01 migración/0
 4 root 15 -5 0 0 0 S 0 0.0 0:08.13 ksoftirqd/0
 5 de la root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/0
 6 root RT -5 0 0 0 S 0 0.0 17:27.31 migración/1
 7 root 15 -5 0 0 0 S 0 0.0 0:01.21 ksoftirqd/1
 8 de la root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/1
 9 de la root RT -5 0 0 0 S 0 0.0 10:02.56 migración/2
 10 de la root 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/2
 11 de la root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/2
 12 de la root RT -5 0 0 0 S 0 0.0 4:29.53 migración/3
 13 de la root 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/3

56voto

Pascal Thivent Puntos 875

(1) veo que cada uno de los procesos en ejecución, que ocupa un porcentaje muy pequeño de la memoria (%MEM no más de 0,2%, y la mayoría sólo 0.0%), pero, ¿cómo la memoria total es de casi utilizados como en la cuarta línea de salida ("Mem: 130766620k total, 130161072k utilizado, 605548k libre, 919300k buffers")? La suma de utilizar el porcentaje de la memoria a través de todos los procesos que se parece poco probable alcanzar casi el 100%, ¿no?

Para ver la cantidad de memoria que está utilizando actualmente, ejecutar free -m. Se proporcionará una salida como:

 total usado free shared buffers cached
Mem: 2012 1923 88 0 91 515
-/+ buffers/cache: 1316 695
Swap: 3153 256 2896

La fila superior "usado" (1923), valor que casi siempre casi coincide con la fila superior mem valor (2012). Debido a que Linux le gusta usar cualquier repuesto de la memoria caché de bloques de disco (515).

La clave que se utiliza la figura a tener en cuenta es la buffers/cache fila utiliza valor (1316). Esta es la cantidad de espacio que sus aplicaciones están utilizando actualmente. Para un mejor rendimiento, este número debe ser menor que el total (2012) de la memoria. Para evitar errores de falta de memoria, tiene que ser menos de la capacidad total de la memoria (2012) y el espacio de intercambio (3153).

Si usted desea ver rápidamente la cantidad de memoria libre vistazo a los buffers/cache fila libre de valor (695). Este es el total de la memoria (2012)- el real utilizado(1316). (2012 - 1316 = 696, no 695, este va a ser un problema de redondeo)

(2) ¿cómo entender el promedio de carga en la primera línea ("promedio de carga: 14.04, 14.02, 14.00")?

Este artículo sobre el promedio de carga utiliza un buen tráfico de analogía, es el mejor que he encontrado hasta ahora: la Comprensión de Linux Carga de la CPU - cuando debería estar preocupado?. En su caso, como personas señaló:

En el sistema multi-procesador, la carga está en relación con el número de núcleos de procesador disponible. El "100% de utilización de la" marca es de 1.00 en un solo núcleo del sistema, 2.00, en un dual-core, 4.00 en un quad-core, etc.

Por lo tanto, con una carga promedio de 14: 00 y 24 núcleos, su servidor está lejos de ser sobrecargado.

17voto

Scott Pack Puntos 11452

Unix como de los sistemas, incluyendo linux, están diseñados para hacer el uso más eficiente de la memoria RAM disponible posible. En términos muy generales, hay 3 miembros cada MB de RAM puede ser en:

  1. Gratis
  2. Utilizado por un Proceso de
  3. Se utiliza para Búferes

El 3er estado sólo se utiliza como un espacio nuevo y está diseñado para ser reasignados siempre que sea necesario, es decir, el total de memoria disponible para los programas que realmente está Libre+UsedforBuffers. Como tales, no realmente ver el búfer asignado el espacio se muestra como una asignados a ningún proceso específico.

Su promedio de carga es una pregunta un poco más interesante, ya que puede ser fácilmente malinterpretado. Para la historia completa ver este linuxjournal artículo. La mejor suma es una cita directa del artículo,

La carga de cálculo de promedio es pensado como un promedio móvil de procesos en Linux de la cola de ejecución marcado correr o ininterrumpida

Lo que significa que usted puede pensar en su carga promedio (número de procesos en ejecución)+(# de procesos en espera de e / s). Teniendo en cuenta que en cualquier momento usted puede tener $NÚCLEO número de procesos que se están ejecutando, yo diría que la carga promedio de 14 es bastante bajo.

4voto

jason saldo Puntos 5036

De la sar el hombre de la página:

 El promedio de carga se calcula como el promedio del número de ejecutables o 
 las tareas de ejecución (R), y el número de tareas en el sistema de
 el sueño (estado D) durante el intervalo de tiempo especificado.

De la uptime el hombre de la página:

 Sistema de carga promedio es el promedio del número de procesos que son
 en un ejecutable o ininterrumpible estado. Un proceso en un estado ejecutable
 es el uso de la CPU o de espera para el uso de la CPU. Un proceso en unin‐
 terruptable estado está a la espera de algunos de e/S de acceso, por ejemplo, la espera para el disco.
 Las medias son tomadas a través de los tres intervalos de tiempo. Carga promedio
 no normalizado por el número de Cpu en un sistema, para que una carga de aver‐
 la edad de 1 significa que un único sistema de CPU se carga todo el tiempo, mientras que en un 4
 Sistema de CPU significa que estuvo inactivo el 75% del tiempo.

3voto

Corin Blaikie Puntos 6223
  1. Linux, por algún tiempo, ha logrado su memoria de una manera que hace que la línea de top básicamente inútil, por lo general mantener la mayor parte de la memoria de la máquina asignada para diversos usos cuando no es requerido por un proceso de usuario.
  2. La carga promedio es el promedio del número de procesos que se ejecutan o en espera de ejecución. Por lo general, tiene una fuerte correlación negativa con la latencia del sistema/capacidad de respuesta, por lo que desea que sea tan bajo como sea posible. Ya que cada uno de su Cpu puede ejecutar algo en un momento dado, sin embargo, usted parece estar haciendo muy bien en la 14.

0voto

dmityugov Puntos 677

Carga media es una gran cosa. Le permite entender lo que sucede más allá de la utilización del 100%, básicamente: http://en.wikipedia.org/wiki/Load_%28computing%29

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: