Traducción del siguiente articulo
La administración de contenedores Linux (LXC) ahora se maneja a menudo con LXD, el proyecto principal de Canonical construido sobre LXC. LXD ofrece un conjunto de opciones para controlar los recursos de los contenedores Linux y establecer límites cuando sea apropiado. Esta publicación hablará sobre cómo establecer restricciones en la CPU, sin embargo, hay otras opciones disponibles para limitar casi cualquier tipo de recurso, como red, E/S de disco, memoria, etc.
Límites disponibles
La administración de la CPU se realiza de 1 de 4 maneras, según su carga de trabajo esperada y el régimen de administración de la CPU del host.
- Número de CPU: define la cantidad de núcleos de CPU que LXC puede usar con este contenedor y distribuye automáticamente el tiempo de CPU entre los invitados cuando hay competencia por el tiempo de CPU. El valor utilizado es un número entero, por ejemplo 2.
- Núcleos específicos: especifica núcleos físicos específicos para que los use el contenedor y distribuye el tiempo de CPU disponible entre contenedores cuando varios contenedores usan los mismos núcleos. El valor utilizado es un número entero o rango y puede estar separado por comas, por ejemplo 2, 0-1 o 0-1,3,5-9.
- Participación limitada: permite un porcentaje específico de tiempo de CPU para el contenedor, o más si está disponible. Cuando el host no está bajo carga, un contenedor puede usar cualquier CPU disponible, pero cuando hay contención por la CPU, el contenedor se limitará a la cantidad especificada. El contenedor verá todos los núcleos de CPU del host (en TOP, por ejemplo).
- Comparte de tiempo limitado: limitará el tiempo de CPU del contenedor a lo que se especifique de cada 200ms. Incluso si hay más CPU disponible, solo se permite lo que se especifica por porción de 200ms. El contenedor verá todos los núcleos de CPU del host (en TOP, por ejemplo).
Establecimiento de límites
El establecimiento de límites se realiza con el comando lxc
. Luego hay dos opciones; limits.cpu
para los puntos anteriores 1 y 2, o limit.cpu.allowance
para los puntos 3 y 4.
lxc config set [CONTENEDOR] limits.cpu [VALOR]
[CONTENEDOR]
es el nombre del contenedor; se puede obtener delxc list
si no está seguro.[VALOR]
es un valor válido del punto 1 o 2 anterior.
O
lxc config set [CONTENEDOR] limits.cpu.allowance [VALOR]
[CONTENEDOR]
es el nombre del contenedor; se puede obtener delxc list
si no está seguro.[VALOR]
es un valor válido del punto 3 o 4 anterior.
Ejemplos de límite de CPU
- Configure el contenedor
nginx-proxy
para que use cualquiera de las 2 CPU en el host.
lxc config set nginx-proxy limits.cpu 2
- Configure el contenedor
nginx-proxy
para que use las CPU físicas 0, 3, 7, 8 y 9 en el host.
lxc config set nginx-proxy limits.cpu 0,3,7-9
- Configure el contenedor
nginx-proxy
para que use el 20% de la CPU disponible en el host o más si está disponible.
lxc config set nginx-proxy limits.cpu.allowance 20%
- Configure el contenedor
nginx-proxy
para que use no más del 50% de la CPU disponible en el host, o 100 ms por cada 200 ms de tiempo de CPU disponible.
lxc config set nginx-proxy limits.cpu.allowance 100ms/200ms
Puede ver /proc/cpuinfo
para ver los núcleos disponibles en su contenedor, sin embargo, no incluirá ningún límite de programación o prioridad adicional.
cat /proc/cpuinfo | grep processor
processor: 0
processor: 1
Prioridad de CPU
La última opción relacionada con la limitación de CPU es la prioridad del tiempo de CPU. Esta opción solo se activa cuando el host está sobrecargado en recursos de CPU y los contenedores están luchando por el tiempo de CPU. Esto puede ocurrir en un solo núcleo (si se usan los puntos anteriores 1 o 2) o en todo el sistema (si no hay limitación de CPU en uso o si se usan los puntos anteriores 3 o 4).
Los valores disponibles van de 0 a 10 (inclusive). Los números más bajos significan una prioridad más baja, mientras que un número más alto significa que la máquina obtendrá tiempo de CPU antes que los números más bajos.
El siguiente comando establece una prioridad de CPU de 5 para el contenedor nginx-proxy:
lxc config set nginx-proxy limits.cpu.priority 5
El siguiente comando establece una prioridad de CPU de 2 para el contenedor php-backend, por lo que obtendría menos tiempo de CPU que el contenedor nginx-proxy cuando la CPU esté en contención.
lxc config set php-backend limits.cpu.priority 5
No hay comentarios.:
Publicar un comentario