Hay muchas preguntas similares, pero ninguna de ellas me ayuda con mi problema.
Tengo ubuntu 11.10 en el servidor (es la versión de escritorio). Tengo un sitio web en ejecución. Hay un proceso que es muy importante, pero no tiene que ejecutarse con alta prioridad. Quiero limitar permanentemente el uso de la CPU para el proceso , no para el usuario. Este proceso lo ejecuta la función exec (es la función php, no el proceso del sistema).
Entonces veo 2 opciones: 1. Agregar algún tipo de límite cada vez que se ejecuta la función. 2. Limite el uso de la CPU de forma permanente para este proceso.
He intentado usar "nice" y cpulimit, pero nada parece funcionar. Nice no tiene ningún efecto y cpulimit (con -e) dice: "no se encontró ningún proceso objetivo".
Soy un principiante, así que por favor asuma que no sé casi nada.
cgsnapshot -s
para recuperar la información sin escribir el archivo de configuración manualmente, lo que no se recomienda.Respuestas:
En ausencia de detalles solicitados ...
Así es como uso cgroups en ubuntu.
A lo largo de esta publicación, deberá cambiar la variable "$ USER" para el usuario que ejecuta el proceso
Agregué información para la memoria y eso será una pregunta frecuente, si no la necesita, no la use.
1) Instalar
cgroup-bin
2) reiniciar. cgroups ahora se encuentra en
/sys/fs/cgroup
3) Crea un cgroup para tu usuario (el propietario del proceso)
4) Su usuario puede administrar recursos. Por defecto, los usuarios obtienen 1024 unidades de CPU (recursos compartidos), por lo que para limitar a aproximadamente 10% de CPU, la memoria está en bytes ...
5) Comience su proceso (cambie exec a cgexec)
Configuración
Asumiendo que cgroups están trabajando para usted;)
Editar
/etc/cgconfig.conf
, agregar en su grupo c personalizadoAgregue en su cgroup. Nuevamente cambie $ USER por el nombre de usuario que posee el proceso.
También puede especificar grupos
gid=$GROUP
, /etc/cgconfig.conf está bien comentado.Ahora vuelve a ejecutar tu proceso con
cgexec -g cpu:$USER command <options>
Puede ver su proceso (por PID) en
/sys/fs/cgroup/cpu/$USER/tasks
Ejemplo
Para obtener información adicional, consulte: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/
fuente