Digamos que estoy ejecutando un servicio de multiprocesamiento dentro de un contenedor de Docker que genera múltiples procesos, ¿Docker usaría todos / múltiples núcleos / CPU del host o solo uno?
120
Digamos que estoy ejecutando un servicio de multiprocesamiento dentro de un contenedor de Docker que genera múltiples procesos, ¿Docker usaría todos / múltiples núcleos / CPU del host o solo uno?
--cpuset-cpus
si quería cambiar eso.Respuestas:
Como menciona Charles, por defecto se pueden usar todos, o puede limitarlo por contenedor usando el
--cpuset-cpus
parámetro.Eso restringiría el contenedor a 3 CPU (0, 1 y 2). Consulte los documentos de ejecución de la ventana acoplable para obtener más detalles.
La forma preferida de limitar el uso de CPU de los contenedores es con un límite fraccional en las CPU:
Eso limitaría su contenedor a 2.5 núcleos en el host.
Por último, si ejecuta Docker dentro de una VM, incluidos Docker para Mac, Docker para Windows y Docker-machine, esas VM tendrán un límite de CPU separado de su computadora portátil. Docker se ejecuta dentro de esa máquina virtual y utilizará todos los recursos proporcionados a la propia máquina virtual. Por ejemplo, con Docker para Mac tienes el siguiente menú:
fuente
Tal vez su máquina virtual host tenga solo un núcleo de forma predeterminada. Por lo tanto, primero debe aumentar el recuento de cpu de su VM y luego usar la opción --cpuset-cpus para aumentar sus núcleos de Docker. Puede eliminar la máquina virtual predeterminada de Docker con el siguiente comando y luego puede crear otra máquina virtual con recuento de cpu y tamaño de memoria opcionales :
Después de este paso, puede especificar el número de núcleos antes de ejecutar su imagen. este comando utilizará 4 núcleos de un total de 8 núcleos.
Luego, puede verificar el número de núcleos disponibles en su imagen usando este comando:
fuente