Understanding CPU containers
dhaval at linux.vnet.ibm.com
Fri Sep 11 04:21:25 PDT 2009
On Wed, Sep 09, 2009 at 04:00:27PM +0530, Mukesh G wrote:
> I am trying to understand the behavior of CPU containers as I
> am unable to explain few things.
> - Built the latest kernel 126.96.36.199 and installed on my Intel core2Duo desktop
> - Mounted the cpu subsystem using
> - mount -t cgroup -ocpu cgroup /containers/cpu/
> - Created 3 sub directories under /containers/cpu
> - 512 for cpu.shares=512
> - 1024 for cpu.shares=1024
> - 2048 for cpu.shares=2048
> - Created 3 bash terminals and attached each one to the individual cpu
> sub system using the /bin/echo command. This essentially allows any
> process created by the shells to be automatically added to the cpu
> subsystem to which the shell belongs
> - Ran a compute intensive benchmark “openssl speed aes-256-cbc”
> benchmark on all the shells at the same time.
> - Enclosing the numbers from the run…
> - Observed CPU Utilization : 99.8 , 49.9 , 49.9
> Results from the run
> The 'numbers' are in 1000s of bytes per second processed.
> CPU shares allocation
> 16 bytes 64 bytes
> 256 bytes 1024 bytes 8192 bytes
> 512 35459.95k 43441.75k
> 46660.35k 46707.71k 77040.30k
> 1024 57448.63k 44050.54k
> 46558.98k 46633.03k 47252.76k
> 2048 71186.36k 87142.02k
> 92513.79k 93769.05k 94795.09k
> 1024 vs 512 1.62 1.01
> 0.99 0.99 0.61
> 2048 vs 1024 1.23 1.97
> 1.98 2.01 2
> - Unless the cpu resources are overcommitted, there is no
> value in the allocating shares to the containers.
> - 2048 vs 1024 cpu containers, the scale is 2X, except for 16 bytes
> - 512 vs 1024 cpu containers, there is no difference at all,
> except for 16 bytes
> - 512 vs 1024 cpu containers, there is no difference for 8192
> bytes as the remaining 2 openssl runs are complete.
(word wrapping has broken your table for me. I will try to decipher it
and post observations on it later on.)
> - For CPU bound, there has to be an over commit on the CPUs
> otherwise the share allocation does not matter
Bharata has posted some patches recently at
http://lwn.net/Articles/348578/ which allow one to throttle the amount
of CPU bandwidth available to a cgroup. Any feedback on that will be
> - One cannot dynamically assign cpus to the container, by
> default, it runs on the no of cores available.
Right. But you can use cpusets to carve out the system if you want to.
More information about the Containers