El valor medio de carga es una métrica muy importante para comprender el comportamiento de un sistema Linux, y sobre todo su estado actual y en el pasado reciente. Muchas veces hay confusión entre su significado y el del porcentaje de uso de CPU, pero en realidad son importantes las diferencias. En este artículo trato de explicar el verdadero significado de ambos y cómo saber si una máquina Linux se encuentra sobrecargada o infrautilizada.
Diferencias entre CPU física, CPU lógica, Core/Núcleo, Thread/Hilo y Socket
Cuando tratamos de conocer la arquitectura y prestaciones a nivel de CPU de una máquina mediante comandos Linux como nproc o lscpu, muchas veces nos encontramos con que no somos capaces de interpretar sus resultados porque confundimos términos como CPU física, CPU lógica, CPU virtual, núcleos o cores, threads, sockets, etc. Si a esto le añadimos conceptos como HyperThreading (no confundir con multithreading), llega un momento en que ya no podemos estar seguros de cuántos cores tiene nuestra máquina, no entendemos por qué comandos como htop nos indican que tenemos 8 cpus cuando creíamos que habíamos comprado un único procesador quad-core, etc. En fin, un lío.
Uso excesivo de CPU al convertir imágenes con ImageMagick
En ciertas versiones de ImageMagick se da el problema (seguramente debido a un bug) de que cuando se intenta convertir o manipular una imagen, ya sea desde la línea de comandos (comando convert) o a través de una de las numerosas API’s existentes (por ejemplo PHP), el uso de CPU se dispara más allá del 100% (debido a que este problema se da en sistemas multiprocesador) haciendo que nuestro sistema se vuelva tremendamente lento. Aparte de este uso excesivo de CPU, el proceso de conversión se queda bloqueado, no alcanzando a terminar nunca. Esto ocurre incluso con imágenes pequeñas con un tamaño de pocos kilobytes.
Cómo saber cuántos procesadores y núcleos tiene una máquina Linux
El método más sencillo para saber el número de procesadores presentes en una máquina Linux es el siguiente: