diff --git a/config-linux.md b/config-linux.md index 37ea951..b4f8b7c 100644 --- a/config-linux.md +++ b/config-linux.md @@ -554,6 +554,13 @@ The following rules on parameters MUST be applied: * If `closID` is set, and neither of `l3CacheSchema` and `memBwSchema` are set, runtime MUST check if corresponding pre-configured directory `closID` is present in mounted `resctrl`. If such pre-configured directory `closID` exists, runtime MUST assign container to this `closID` and [generate an error](runtime.md#errors) if directory does not exist. +* **`enableCMT`** *(boolean, OPTIONAL)* - specifies if Intel RDT CMT should be enabled: + * CMT (Cache Monitoring Technology) supports monitoring of the last-level cache (LLC) occupancy + for the container. + +* **`enableMBM`** *(boolean, OPTIONAL)* - specifies if Intel RDT MBM should be enabled: + * MBM (Memory Bandwidth Monitoring) supports monitoring of total and local memory bandwidth + for the container. ### Example diff --git a/schema/config-linux.json b/schema/config-linux.json index b97fcb5..5ca2dc3 100644 --- a/schema/config-linux.json +++ b/schema/config-linux.json @@ -259,6 +259,12 @@ "memBwSchema": { "type": "string", "pattern": "^MB:[^\\n]*$" + }, + "enableCMT": { + "type": "boolean" + }, + "enableMBM": { + "type": "boolean" } } }, diff --git a/specs-go/config.go b/specs-go/config.go index a41d798..c0e8794 100644 --- a/specs-go/config.go +++ b/specs-go/config.go @@ -180,7 +180,7 @@ type Linux struct { // MountLabel specifies the selinux context for the mounts in the container. MountLabel string `json:"mountLabel,omitempty"` // IntelRdt contains Intel Resource Director Technology (RDT) information for - // handling resource constraints (e.g., L3 cache, memory bandwidth) for the container + // handling resource constraints and monitoring metrics (e.g., L3 cache, memory bandwidth) for the container IntelRdt *LinuxIntelRdt `json:"intelRdt,omitempty"` // Personality contains configuration for the Linux personality syscall Personality *LinuxPersonality `json:"personality,omitempty"` @@ -685,8 +685,9 @@ type LinuxSyscall struct { Args []LinuxSeccompArg `json:"args,omitempty"` } -// LinuxIntelRdt has container runtime resource constraints for Intel RDT -// CAT and MBA features which introduced in Linux 4.10 and 4.12 kernel +// LinuxIntelRdt has container runtime resource constraints for Intel RDT CAT and MBA +// features and flags enabling Intel RDT CMT and MBM features. +// Intel RDT features are available in Linux 4.14 and newer kernel versions. type LinuxIntelRdt struct { // The identity for RDT Class of Service ClosID string `json:"closID,omitempty"` @@ -699,6 +700,14 @@ type LinuxIntelRdt struct { // The unit of memory bandwidth is specified in "percentages" by // default, and in "MBps" if MBA Software Controller is enabled. MemBwSchema string `json:"memBwSchema,omitempty"` + + // EnableCMT is the flag to indicate if the Intel RDT CMT is enabled. CMT (Cache Monitoring Technology) supports monitoring of + // the last-level cache (LLC) occupancy for the container. + EnableCMT bool `json:"enableCMT,omitempty"` + + // EnableMBM is the flag to indicate if the Intel RDT MBM is enabled. MBM (Memory Bandwidth Monitoring) supports monitoring of + // total and local memory bandwidth for the container. + EnableMBM bool `json:"enableMBM,omitempty"` } // ZOS contains platform-specific configuration for z/OS based containers.