Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does docker use CPU cores from its host operating system?

Tags:

docker

lxc

My understading, based on the fact that Docker is based on LXC, is that Docker containers share various resources from its host operating system. My concern is with CPU cores. Here is a scenario:

  • a host linux OS has 8 cores
  • I have to deploy a set of docker containers on the host OS above.
  • Some of the docker containers that I need to deploy would be better suited to use 2 cores

a) So if I run all of the docker containers on that host, will they consume CPU/cores as needed like if they were being run as normal installed applications on that host OS ?

b) Will the docker container consume its own process and all of the processing that is contained in it will be stuck to that parent process's CPU core ?

c) How can I specify a docker container to use a number of cores ( 4 for example ). I saw there is a -C flag that can point to a core id, but it appears there is no option to specify the container to pick N cores at random.

like image 341
gextra Avatar asked Nov 21 '13 14:11

gextra


People also ask

Does Docker use all CPU cores?

If no value is provided docker will use a default value. On windows, a container defaults to using two CPUs. If hyperthreading is available this is one core and two logical processors. If hyperthreading is not available this is two cores and two logical processors.

Does Docker use CPU?

By default, Docker containers have access to the full RAM and CPU resources of the host. Leaving them to run with these default settings may lead to performance bottlenecks. If you don't limit Docker's memory and CPU usage, Docker can use all the systems resources.

How can CPU be used in Docker container?

We can get CPU usage of docker container with docker stats command. The column CPU % will give the percentage of the host's CPU the container is using.

Does Docker use multicore?

@MuhammadUmer yes, same as running multiple processes on one CPU.


1 Answers

Currently, I don't think docker provides this level of granularity. It doesn't specify how many cores it allocates in its lxc.conf files, so you will get all cores for each docker, potentially (or possibly 1, I'm not 100% sure on that).

However, you could tweak the conf file generated for a given container and set something like

cpuset {     cpuset.cpus="0-3"; } 
like image 104
Oliver Matthews Avatar answered Sep 19 '22 06:09

Oliver Matthews