Skip to content

Commit e79f8dc

Browse files
committed
runtime-config-linux: Clarify resources vs. cgroupsPath
This should help clarify the cgroupsPath setting added in #137, which was the subject of some confusion in opencontainers/runc#397. Issues I'm trying to clarify here: * If you specify a cgroupsPath, is the container added to that path or a sub-cgroup underneath it [1]? (This commit rules in favor of "added to that path") * If you specify a cgroupsPath, can the runtime modify that cgroup [2]? (This commit rules "yes, if 'resources' is specified", following [3] and the Go comment from #137 [4]). To help make the distinctions clearer, I've added a facet list to help folks think about the difference between cgroup creation, process assignment, and resource configuration. cgroupsPath is just about cgroup creation and process assignment. 'resources' is just about resource configuration. I've listed out Mrunal's first three cases [3] to be even clearer. I stayed away from the "neither are set" case, since I covered that fairly directly in #237, which that was punted back to the list [5] and has seen no further interest. So I'm not clear on what the intended semantics are there, although Mrunal's wording in [4] seems to agree with the proposal in #237. [1]: opencontainers/runc#397 (comment) [2]: opencontainers/runc#397 (comment) [3]: opencontainers/runc#397 (comment) [4]: 429f936#diff-34c30be66233f08b447fb608ea0e66bbR30 [5]: https://groups.google.com/a/opencontainers.org/d/msg/dev/qWHoKs8Fsrk/c9mv6qXtDAAJ Message-ID: <[email protected]> Signed-off-by: W. Trevor King <[email protected]>
1 parent 7c17452 commit e79f8dc

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

runtime-config-linux.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ Also known as cgroups, they are used to restrict resource usage for a container
144144
cgroups provide controls to restrict cpu, memory, IO, pids and network for the container.
145145
For more information, see the [kernel cgroups documentation](https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt).
146146

147+
There are a few facets to this:
148+
149+
* Managing the existence of cgroups within the hierarchy (`cgroupsPath`).
150+
* Moving processes to different cgroups.
151+
* Configuring cgroups to apply resource limits (`resources`).
152+
147153
The path to the cgroups can be specified in the Spec via `cgroupsPath`.
148154
`cgroupsPath` is expected to be relative to the cgroups mount point.
149155
If `cgroupsPath` is not specified, implementations can define the default cgroup path.
@@ -156,11 +162,13 @@ The cgroups will be created if they don't exist.
156162
"cgroupsPath": "/myRuntime/myContainer"
157163
```
158164

159-
`cgroupsPath` can be used to either control the cgroups hierarchy for containers or to run a new process in an existing container.
165+
The container process will be added to the cgroups at `cgroupsPath`.
160166

161167
You can configure a container's cgroups via the `resources` field of the Linux configuration.
162168
Do not specify `resources` unless limits have to be updated.
163-
For example, to run a new process in an existing container without updating limits, `resources` need not be specified.
169+
For example, to run a new process in an existing container without updating limits, specify `cgroupsPath` but not `resources`.
170+
To run a new process in an existing container and update limits, specify both `cgroupsPath` and `resources`.
171+
To run a new process in a new container with explicit resource limits, specify `resources` and optionally set `cgroupsPath` to a cgroup that does not yet exist.
164172

165173
#### Disable out-of-memory killer
166174

0 commit comments

Comments
 (0)