Vamos a hacer una pausa en los tutoriales que estamos realizando para explicar cómo se hace una cosa que en este momento nos viene muy bien: interpretar la carga de la CPU y el promedio de carga de un ordenador con Linux (recordad que a la Raspberry que estamos preparando en los tutoriales le estamos instalando un sistema Linux).
Hasta ahora en los tutoriales sobre la Raspberry hemos instalado en la misma máquina (recordad que tiene un hardware muy lmitado) el sistema operativo, un servidor de Pi-Hole, otro servidor de VPN, aMule y Transmission, y os he insistido en que la raspberry aún está muy ociosa y podemos meterle más caña. Seguro que muchos estaréis pensando que estoy como una cabra (y no os voy a quitar la razón), pero… ¿Cómo puedo estar seguro de lo que hablo? ¿No me estaré pasando de listo y acabaré incendiando la Raspberry de meterle tanta caña? Para despejar dudas lo mejor es ver la carga de la CPU y el promedio de cargas de la misma.
La carga de la CPU no es más que un simple número con decimales que muchos sistemas Linux nos mostrarán en sus diferentes interfaces. Si tenemos acceso al terminal de nuestro sistema Linux (o Mac OS), podemos ver de forma sencilla esta información escribiendo el siguiente comando:
top
El comando nos mostrará una pantalla similar a esta.
O si tenemos un mac, el comando nos dará una salida similar a esta otra.
En ambos casos, para salir de esa pantalla tendremos que pulsar “Control+C”. Os he marcado en rojo la zona que nos interesa de esos datos. Si os fijáis tenemos tres datos distintos, pero ¿Qué nos están diciendo? Para explicarlo no puedo hacer más que remitiros a una impresionante infografía (por lo didáctica que es) realizada por Ignacio Alba Obaya en http://aplicacionesysistemas.com. Fijaos bien en ella y dentro de un momento la analizaremos.
Tal y cómo se ve en la imagen, cada uno de los tres valores es la media de la carga de la CPU en distintos momentos del tiempo. La media del último minuto, la media de los últimos 5 minutos y la media de los últimos 15 minutos. Cuanto más altos sean estos valores, más trabajo está soportando nuestro procesador. Pero ¿Hasta dónde pueden llegar esos valores? ¿Cuál es el límite que no debería sobrepasarse? Eso se explica en el apartado “¿Cómo lo entiendo”, que nos viene a decir lo siguiente:
Cada núcleo del procesador puede tener una determinada carga de trabajo. Si el núcleo no tiene ninguna carga de trabajo, el número que tendría nuestro “Load Average” sería cero. Si está a media carga, el número que tendría el “Load Average” sería “0,5” y si está trabajando al 100% (La infografía lo interpreta como carga crítica) entonces el número de este indicador sería “1”. Esto es sencillo de entender.
Pero puede darse el caso (y de hecho se da) de que el núcleo no sea lo suficientemente rápido para completar todos los procesos que le hemos mandado hacer y sacárselos de encima, de forma que no sólo esté al 100%, si no que además el núcleo tiene una lista de procesos esperando a ejecutarse y empiece a formarse una cola. El núcleo no da abasto. Entonces tendremos un valor mayor que 1 y esto podría ser un problema si es algo mantenido en el tiempo.
Pero fijaos que siempre hablo de núcleos, no de procesadores. Los procesadores modernos siempre tienen más de un núcleo, desde los 2 núcleos de un sencillo Intel Core i3 hasta los monstruosos 28 núcleos del Intel Xeon W que porta el nuevo Mac Pro. Además, algunos equipos tienen más de un procesador (es algo habitual en servidores). ¿Como interpretar entonces los resultados en estos casos?
Sencillo: El “Load Average” crítico será el número de núcleos en total que tenga nuestro equipo. Por tanto si tenemos un Intel Core i3 con 2 núcleos de proceso, el “Load Average” crítico será 2. Si tenemos una bestia parda como el Intel Xeon W del Mac Pro, que tiene 28 núcleos, el “Load Average” crítico será 28. Tenemos que saber con cuántos núcleos estamos trabajando para saber si nuestro “Load Average” es demasiado alto o no.
Vamos a ver algunos ejemplos de sitios dónde podemos ver esa carga de la CPU además de en el terminal y vamos a ver también cómo podemos interpretarla. Empecemos por algo que hemos instalado en uno de los tutoriales anteriores: Pi-Hole. Veamos una parte del interface que nos saca su página web en la portada.
Este sistema lo he montado sobre una Raspberry Pi 3 B+, que tiene 4 núcleos. Esta captura la hice mientras mantenía abierta una conexión VPN, navegando por internet y con el aMule descargando 6 archivos a la vez a todo trapo. Esta raspberry tiene más cosas instaladas (Transmission, un servidor de Plex que en el momento de sacar la captura no se estaba usando y algunos otros programas), pero en ese momento, como podéis ver, la carga máxima que había soportado era de 2,95 (media de 5 minutos). La raspberry está un poco caliente (la tengo sin ventiladores ni disipadores adicionales), y podemos ver que tiene mucha memoria libre (gracias en parte a instalar el sistema operativo sin entorno gráfico. En cuanto a las cargas de la CPU está en el límite de los valores que en la infografía pone como “peligrosos” pero no está en el crítico. Por tanto en un escenario real, si queremos podríamos parar momentáneamente las descargas para bajar ese valor, y obtendríamos algo como esto, que es lo que obtuve 20 minutos después de parar las descargas.
En todo caso, he comprobado que nuestro sistema es capaz de estar descargando desde los programas P2P y retransmitiendo vídeo con el Plex Server sin ningún problema. No me he visto nunca en la necesidad de tener que parar nunca un proceso en este equipo. De hecho, aunque tuviéramos la carga de 2’95 de la primera fotografía, tendríamos aún un núcleo completamente ocioso, por lo que no considero que esta situación sea preocupante.
Otro caso que podemos ver es el de este mismo blog, que está albergado en una raspberry (por si os interesa, la raspberry además de albergar este blog, alberga un servidor de Nextcloud, un servidor de correo y otra pequeña página web). Por tanto, cada vez que abrís una página de flopy.es, la raspberry que tengo encima de mi escritorio os la está generando. Las estadísticas de la web las tengo abiertas a todo el mundo precisamente para usar en artículos como este y las podéis consultar en este enlace. Veamos la situación actual de este equipo.
Como poder ver en esta gráfica que abarca todo un mes, el equipo estuvo bastante ocioso. Hay un pequeño pico el 17 de Junio en el que la carga de la CPU llega casi a 5 (recordad que este equipo tiene sólo 4 núcleos), pero esto se debió a una actualización del sistema. Fue algo puntual. Por tanto, no es que la raspberry sea un equipo adecuado para albergar esta web, sinó que incluso podría decir que es demasiado potente, porque está siempre muy ociosa (salvo momentos puntuales en las actualizaciones).
Veamos otro caso real. Esta gráfica la genera Nextcloud, que se trata de un servidor de archivos que funciona de forma muy similar a Dropbox.
En este caso no tenemos los valores de las medias de 5 ni de 15 minutos, sinó valores instantáneos, pero como podemos ver, los valores bailan entre 0 y 0’11, por lo que nos da igual el número de procesadores o de núcleos, ya que el valor es inferior a uno y sea cual sea el procesador, sabemos que al menos en el período que se muestra en la gráfica está ocioso.
Gráficas mucho más «curradas» nos las genera Freenas, que se trata de un NAS (un servidor de archivos) de software libre y que es muy usado tanto en ámbitos profesionales como domésticos (hacedme caso… Freenas es una verdadera maravilla). Pues bien… uno de los que controlo me muestra los siguientes datos.
Como veis, tiene un procesador Intel G3250, que es un procesador de sólo 2 núcleos. Pero por lo que se ve en la carga media son más que suficientes, ya que las cargas son muy bajas. Vamos a ver las gráficas que nos genera Freenas.
Como podréis ver, los picos no son superiores a 0,8, por lo que no hay problema ninguno con las cargas en este equipo.
Por tanto, si alguna vez tenéis alguna duda de si algún equipo será lo suficientemente potente para realizar un proceso, estos indicadores pueden ser muy útiles para poder tomar una decisión al respecto.
Entiendo tu explicación, es la misma que hace todo el mundo, pero a mi los datos no me cuadran.
Tengo varias instancais EC2 con 16 núcleos y el load avarage se va a más de 100 sin tener ningún problema, de hecho 100 es liviano, a veces está arriba de 200.