Cómo limitar del uso de CPU de un proceso mediante cpulimit

Hola a todosubuntudebian

En este tutorial vamos a aprender como limitar el uso de CPU de un proceso con la herramienta cpulimit en Debian/Ubuntu. cpulimit es un programa muy simple que logra limitar el consumo de CPU de un proceso (expresado en porcentaje, no en tiempo de CPU). Esta herramienta puede ser muy útil para controlar procesos batch, cuando no nos interese que dichos procesos se coman gran parte de la CPU. La herramienta no actúa sobre el valor de nice ni tampoco sobre valores de prioridad de planificación, solo en el uso real de CPU del proceso. También, es capaz de adaptarse por si mismo a la carga global del sistema, de forma dinámica y rápida.

  1. Nota preliminar
  2. Correremos todos los comandos como root, por lo tanto hagamos loggin como root de forma directa (Debian) o usemos sudo (Ubuntu):

    sudo su

    Si tu máquina tiene 1 solo procesador puedes limitar el porcentaje de 0% a 100%, lo que significa que si por ejemplo seleccionamos un 50%, tu proceso no puede usar mas de 500 ms de tiempo de cpu en casa segundo. En cambio si tu máquina tiene 4 procesadores, el porcentaje variará de 0% a 400%, por lo tanto estableciendo el limite en 200% significará que no se use mas de la mitad de la potencia existente. En cualquier caso, el porcentaje es exactamente el mismo valor que puedes ver cuando corres top.

    cpulimit debe correr como mínimo con el mismo usuario que corre el proceso. Es bastante mas operativo que cpulimit corra con root, con el objetivo de que tenga mayor prioridad y mejor contros sobre el proceso.

  3. Instalando cpulimit
  4. cpulimit se encuentra disponible como un paquete para Debian y Ubuntu, por lo tanto puede ser instalado así:

    aptitude install cpulimit

  5. Usando cpulimit
  6. Echemos un vistazo a la página man de cpulimit para aprender a usarlo:

    man cpulimit
    NAME
    cpulimit – limits the CPU usage of a process

    SYNOPSIS
    cpulimit TARGET [OPTIONS...]

    DESCRIPTION
    TARGET must be exactly one of these:

    -p, –pid=N
    pid of the process

    -e, –exe=FILE
    name of the executable program file

    -P, –path=PATH
    absolute path name of the executable program file

    OPTIONS

    -l, –limit=N
    percentage of CPU allowed from 0 to 100 (mandatory)

    -v, –verbose
    show control statistics

    -z, –lazy
    exit if there is no suitable target process, or if it dies

    -h, –help
    display this help and exit

    EXAMPLES
    Assuming  you  have  started ”foo –bar” and
    you find out with top(1) or ps(1) that this process uses all your CPU time you can either

    # cpulimit -e foo -l 50
    limits the CPU usage of the process by acting on the 
    executable program file (note: the argument ”–bar” is omitted)

    # cpulimit -p 1234 -l 50
    limits the CPU usage of the process by acting on its PID, as shown by ps(1)

    # cpulimit -P /usr/bin/foo -l 50
    same as -e but uses the absolute path name

    AUTHOR
    This  manpage was written for the Debian project 
    by gregor herrmann <gregor+debian@comodo.priv.at> but may be used by others.

    Ahora supongamos que queremos limitar el proceso apache2 al 30%, tendríamos que hacer lo siguiente:

    cpulimit -e apache2 -l 30

    La opción -e toma el nombre del programa ejecutable. Puedes conseguir el nombre de la salida del comando top.

    En vez de usar el nombre del fichero ejecutable, podemos usar el ID de proceso con la opcion -p. Puedes obtener el ID de proceso de apache2 así:

    ps aux

    o

    ps aux | grep apache2

    Asumamos que el ID de proceso de apache2 es el 4510, para limitar la CPU a 30% debieramos hacer:

    cpulimit -p 4510 -l 30

    Tambien podriamos pasar a cpulimit el camino absoluto del ejecutable que queremos controlar con el parámetro -P. El nombre del ejecutable absoluto para apache2 es /usr/bin/apache2, por lo tanto podríamos usar el siguiente comando:

    cpulimit -P /usr/sbin/apache2 -l 30

    Nota: cpulimit correrá en primer plano hasta que pulsemos Ctrl+C, momento en el cual dejará de controlar el proceso.

  7. Enlaces de interés
  8. http://cpulimit.sourceforge.net/

Pues hasta aquí por hoy. Saludos a todos.

Actualización de Wordpress a 2.8.6

Hola a todosEloy Mier

Hoy he realizado la actualización de la aplicación principal del site de la versión 2.8.5 a la versión 2.8.6

La actualización era necesaria pues corrige ciertos problemas de seguridad que me han parecido importantes. Uno de ellos es una vulnerabilidad XSS en la utilidad “Publica esto” (Press this) descubierta por Benjamin Flesch. El otro, descubierto por Dawid Golunski, es un problema en la carga de archivos, relacionado con los nombres, que podría provocar vulnerabilidades en ciertas configuraciones de Apache.

Si alguien nota algún problema o tiene algún inconveniente, que no dude en reportármelo para intentar en lo posible solucionar todos los problemas que se puedan plantear.

Saludos a todos.