J'essaie de construire un système qui exécute des morceaux de code dans des conditions cohérentes, et une façon, j'imagine que cela est possible, d'exécuter les différents programmes dans des conteneurs de docker avec la même disposition, en réservant la même quantité de mémoire, etc. Cependant, Je n'arrive pas à comprendre comment garder l'utilisation du processeur cohérente.
La chose la plus proche que je puisse sembler trouver est les "partages cpu" qui, si je comprends bien la documentation, limitent l'utilisation de cpu en ce qui concerne les autres conteneurs/autres processus en cours d'exécution sur le système et ce qui est disponible sur le système. Ils ne semblent pas capables de limiter le conteneur à une quantité absolue d'utilisation du processeur.
Idéalement, j'aimerais configurer des conteneurs Docker qui se limiteraient à utiliser un seul cœur de processeur. Est-ce possible?
Si vous utilisez une version plus récente de Docker, vous pouvez utiliser --cpuset-cpus=""
dans docker run
pour spécifier les cœurs de CPU que vous souhaitez allouer:
docker run --cpuset-cpus="0" [...]
Si vous utilisez une ancienne version de Docker (<0.9), qui utilise LXC comme environnement d'exécution par défaut, vous pouvez utiliser --lxc-conf
pour configurer les cœurs CPU alloués:
docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0" [...]
Dans ces deux cas, seul le premier cœur de processeur sera disponible pour le conteneur Docker. Ces deux options sont documentées dans l'aide du docker .
J'ai essayé de fournir un didacticiel sur l'allocation des ressources de conteneur.