mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
runc exec: implement CPU affinity
As per - https://github.com/opencontainers/runtime-spec/pull/1253 - https://github.com/opencontainers/runtime-spec/pull/1261 CPU affinity can be set in two ways: 1. When creating/starting a container, in config.json's Process.ExecCPUAffinity, which is when applied to all execs. 2. When running an exec, in process.json's CPUAffinity, which applied to a given exec and overrides the value from (1). Add some basic tests. Note that older kernels (RHEL8, Ubuntu 20.04) change CPU affinity of a process to that of a container's cgroup, as soon as it is moved to that cgroup, while newer kernels (Ubuntu 24.04, Fedora 41) don't do that. Because of the above, - it's impossible to really test initial CPU affinity without adding debug logging to libcontainer/nsenter; - for older kernels, there can be a brief moment when exec's affinity is different than either initial or final affinity being set; - exec's final CPU affinity, if not specified, can be different depending on the kernel, therefore we don't test it. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
@@ -83,6 +83,7 @@ type initConfig struct {
|
||||
Rlimits []configs.Rlimit `json:"rlimits"`
|
||||
IOPriority *configs.IOPriority `json:"io_priority,omitempty"`
|
||||
Scheduler *configs.Scheduler `json:"scheduler,omitempty"`
|
||||
CPUAffinity *configs.CPUAffinity `json:"cpu_affinity,omitempty"`
|
||||
|
||||
// Miscellaneous properties, filled in by [Container.newInitConfig]
|
||||
// unless documented otherwise.
|
||||
|
||||
Reference in New Issue
Block a user