2014-09-23 5 views
16

Sto provando a creare un sistema che esegua parti di codice in condizioni coerenti e un modo in cui immagino sia possibile eseguire i vari programmi in contenitori docker con lo stesso layout , riservando la stessa quantità di memoria, ecc. Tuttavia, non riesco a capire come mantenere costante l'utilizzo della CPU.Limitazione di un contenitore Docker a un singolo core CPU

La cosa più vicina che riesco a trovare sono le "condivisioni di CPU" che, se capisco la documentazione, limitano l'utilizzo della CPU rispetto a quanto altri contenitori/altri processi sono in esecuzione sul sistema e cosa è disponibile sul sistema . Non sembrano in grado di limitare il contenitore a una quantità assoluta di utilizzo della CPU.

Idealmente, mi piacerebbe impostare contenitori docker che sarebbero limitati a utilizzare un singolo core CPU. È possibile?

risposta

28

Se si utilizza una versione più recente di Docker, è possibile utilizzare --cpuset-cpus="" in docker run per specificare i core della CPU che si desidera allocare:

docker run --cpuset-cpus="0" [...] 

Se si utilizza una versione precedente di Docker (< 0,9), che usa LXC come ambiente di esecuzione predefinito, è possibile utilizzare --lxc-conf per configurare le core CPU assegnate:

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0" [...] 

In entrambi i casi, solo il primo nucleo CPU sarà disponibile per la conta finestra mobile iner. Entrambe queste opzioni sono documentate in the docker help.