Skip to content

Commit

Permalink
config-linux: add support for Intel RDT/CAT in runtime-spec
Browse files Browse the repository at this point in the history
Add support for Intel Resource Director Technology (RDT) / Cache Allocation
Technology (CAT). Add L3 cache resource constraints in Linux-specific
configuration.

This is the prerequisite of this runc proposal:
opencontainers/runc#433

For more information about Intel RDT/CAT, please refer to:
opencontainers/runc#433

Signed-off-by: Xiaochen Shen <[email protected]>
  • Loading branch information
xiaochenshen committed Aug 9, 2016
1 parent c9c2574 commit 0ade6f0
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
27 changes: 27 additions & 0 deletions config-linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,30 @@ The following parameters can be specified to setup the controller:
}
```

## Intel RDT

`intelRdt` represents the L3 cache resource constraints in Intel Xeon platforms.
It is part of `resources` field of the Linux configuration.

Intel Cache Allocation Technology (CAT) is a sub-feature of Resource Director Technology (RDT).
Currently L3 Cache is the only resource that is supported in Intel RDT.

For more information, see section 17.17 of [Intel Software Developer Manual] [intel-sdm] and [Intel RDT/CAT] [intel-rdt-cat].

The following parameters can be specified for the container:

* **`l3CacheSchema`** *(string, optional)* - specifies the schema for L3 cache id and capacity bitmask (CBM)
* **`l3CacheCpus`** *(string, optional)* - specifies the bitmask of the CPUs that are bound to the schema

###### Example

```json
"intelRdt": {
"l3CacheSchema": "L3:0=ffff0;1=fffff",
"L3CacheCpus": "00000000,00000000,00000000,00000000,00000000,00000000"
}
```

## Sysctl

`sysctl` allows kernel parameters to be modified at runtime for the container.
Expand Down Expand Up @@ -605,3 +629,6 @@ Its value is either slave, private, or shared.
[random.4]: http://man7.org/linux/man-pages/man4/random.4.html
[tty.4]: http://man7.org/linux/man-pages/man4/tty.4.html
[zero.4]: http://man7.org/linux/man-pages/man4/zero.4.html

[intel-sdm]: http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
[intel-rdt-cat]: https://software.intel.com/en-us/articles/introduction-to-cache-allocation-technology
11 changes: 11 additions & 0 deletions specs-go/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,15 @@ type Network struct {
Priorities []InterfacePriority `json:"priorities,omitempty"`
}

// Intel RDT: Intel Xeon platforms shared resource control
type IntelRdt struct {
// The schema for L3 cache id and capacity bitmask (CBM)
// Format: "L3:<cache_id0>=<cbm0>;<cache_id1>=<cbm1>;..."
L3CacheSchema *string `json:"l3CacheSchema,omitempty"`
// The bitmask of the CPUs that are bound to the schema
L3CacheCpus *string `json:"l3CacheCpus,omitempty"`
}

// Resources has container runtime resource constraints
type Resources struct {
// Devices configures the device whitelist.
Expand All @@ -319,6 +328,8 @@ type Resources struct {
HugepageLimits []HugepageLimit `json:"hugepageLimits,omitempty"`
// Network restriction configuration
Network *Network `json:"network,omitempty"`
// IntelRdt restriction configuration
IntelRdt *IntelRdt `json:"intelRdt,omitempty"`
}

// Device represents the mknod information for a Linux special device file
Expand Down

0 comments on commit 0ade6f0

Please sign in to comment.