Load average [GNU/Linux]

sábado, 17 de octubre de 2009

Buenas, esta vez les traigo una traducción de un artículo muy interesante sobre el load average.
Este articulo, está principalmente diseñado para usuarios intermedio-avanzados de sistemas GNU/Linux, ya que estos son los que han oído alguna vez sobre "la leyenda del load average"...
...bueno, ahora vamos a aclarar todo el tema... (eternos jóvenes que aún creen en los reyes magos, ratón perez y políticos honestos, abstenerse)



Escucharon hablar del load average? En criollo sería algo así como la carga promedio del equipo.

Les piqué la curiosidad, no? Entonces van a su shell más cercano y tipean:

$ uptime
15:50:09 up 327 days, 21:13, 47 users, load average: 0.27, 0.23, 0.19

Ahí está! Load average! Emm... 0.27? 0.23? 0.19? Es un porcentaje? Una cuenta? Un cálculo?

El load average es la cantidad de procesos que están encolados, calculados sobre un cierto período de tiempo.

El 0.27 es en un minuto
0.23 en 5 min
0.19 en 15 min.

Emm... sigue sin decirte nada, no? Proceso encolado?

Basicamente es un proceso que se bloqueó esperando algo para continuar ejecutandose. Tipicamente puede estar esperando...

A la CPU
EL acceso de Lectura/Escritura de un disco
Acceso a Lectura/Escritura de una red

Entonces un proceso bloqueado sería, por ejemplo, un proceso esperando que la cpu pueda procesarlo, u otro que está esperando a que el disco lo deje escribir. Quizás hasta es uno que necesita leer algo de internet pero la red está ocupada.

Qué significa un load average elevado? (O que el servidor tenga carga alta)

Ésto es una indicación de que la CPU no se banca el uso que le damos, o que algo está fallando, un disco, una partición, una placa de red...

Y cómo noto que el problema de mi máquina es la carga alta?

Tu máquina responde lento? Se le da por no responder? Tarda horas en hacer lo más simple? Probablemente estés ante un caso de high load average, a.k.a. alta carga.

Hey! Pará! Solucionamelo!

Heeey, que no me iba todavía. La carga alta puede deberse a varios factores. Veamos cómo detectarlos:

Usaremos un comando que se llama top y responde algo así:

$ top



(Cuándo agregarán el tag de código así puedo hacer mis posts prolijitos????).

Continuando, la primera línea es la misma que haciendo uptime, tiempo desde el último booteo y load average.
La segunda especifica las tareas corriendose en la máquina, incluyendo las activas, las dormidas, las detenidas y las zombies.
Tercera línea, ésta nos puede dar una pauta para solucionar el problema. Indica los porcentajes de la(s) CPU(s) usada y en qué está siendo usada:

us: procesos iniciados por algún usuario.
sy: procesos iniciados por el sistema.
ni: procesos iniciados con prioridad especial (nice).
id: porcentaje sin usar (idle).
wa: procesos esperando para continuar (waiting).

Primera cosa a chequear:

Si el porcentaje de usuarios (us) o de sistema (sy) está constantemente en 90 y pico tirando a 100%, significa que la cpu que tenés te quedó chica para el uso que le estás dando a la máquina (o que tiene algún problema de performance).

Si en cambio el porcentaje alto es el de espera (wa), significa que la CPU está insumiendo MUCHO tiempo esperando que se ejecuten las operaciones de E/S (Entrada/Salida, o sea, lectura y escritura). Ésto significa que podés tener un disco que falla, una placa de red que no funciona bien, capaz las aplicaciones no tienen acceso a la información que necesitan a la velocidad que necesitan.

Para saber qué aplicaciones están causando carga, corremos el comando que lista los procesos corriendo en el sistema:

$ ps faux



Fijate la columna STAT, que indica el estado del proceso. Los estados más comunes:or are:

* R - Running (ejecutandose)
* S - Sleeping (en pausa)
* D - Waiting for something (en espera)

Así que buscá algún proceso que esté en D, y empezá desde ahí a diagnosticar el problema.

Para hacer diagnósticos más completos, encontré éstas recomendaciones, aunque no los probé. Úsese bajo su propio riesgo:

strace: Intercepta y registra las llamadas de sistema que son hechas y las señales que son recibidas por procesos.

iostat: Muestra una descripción general de la utilización del CPU, junto con las estadísticas de E/S para uno o más unidades de disco.

bwmon - muestra la actividad de la red.


Fuente

0 comentarios:

Suscríbete al Feed