Add LinuxContainer block I/O resources#739
Open
chrisgeo wants to merge 2 commits into
Open
Conversation
dcantah
reviewed
May 14, 2026
| /// The memory in bytes to give to the container. | ||
| public var memoryInBytes: UInt64 = 1024.mib() | ||
| /// Optional block I/O resource limits for the container cgroup. | ||
| public var blockIO: LinuxBlockIO? |
Member
There was a problem hiding this comment.
I'd prefer we don't use the OCI types directly (it gives us a little wiggle room to add various knobs). You can add a new LinuxBlockIO type in Containerization and use this and just convert to the oci variant like we do for other things in this file.
Author
There was a problem hiding this comment.
Thanks for the feedback.
Does this new shape align with what you were imagining?
Contributor
There was a problem hiding this comment.
@dcantah @chrisgeo see apple/container#1512 (comment) for thoughts on container UX as well.
Mirrors the LinuxRLimit/LinuxCapabilities pattern so the public API can evolve independently of the OCI spec types. Configuration.blockIO now holds the wrapper and is converted via toOCI() at spec assembly.
chrisgeo
added a commit
to full-chaos/container
that referenced
this pull request
May 24, 2026
Two changes addressing review feedback from apple/containerization#739 and apple#1512 (comment): 1. Adopt the new `Containerization.LinuxBlockIO` wrapper added in containerization PR apple#739 (pin advanced to 3d009df). The wire format in `ContainerConfiguration.Resources.blockIO` stays as the Codable `ContainerizationOCI.LinuxBlockIO`; `RuntimeService.configureContainer` converts to the wrapper at the boundary via the new `toContainerizationBlockIO` helper. 2. Replace the six separate `--blkio-*` / `--device-*` flags with a single repeatable `--blkio` flag using key=value[,key=value] syntax, per apple#1512 (comment): --blkio weight=500 --blkio device=/dev/sda,weight=700,leaf-weight=300 --blkio device=/dev/sda,read-bps=1048576,write-bps=1048576 --blkio device=/dev/sda,read-iops=1000,write-iops=1000 Device values accept either an absolute host path (resolved via stat(2)) or a literal `<major>:<minor>`. Parser rejects unknown keys, conflicting global weights, and global-only keys appearing on device-less specs. Tests cover the combined spec, major:minor literal, invalid-weight, unknown-key, and global-only-on-device-spec error paths.
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds ability to expose blockio flags in support of: https://github.com/apple/container/issues/1512