Merge pull request #871 from ConnorDoyle/update-cpu-manager-proposal-interfaces
Updated interface sketches to match implementation
This commit is contained in:
		
						commit
						090854c414
					
				|  | @ -65,7 +65,7 @@ This new method is invoked from two places in the CPU manager: during each | |||
| call to `RegisterContainer` and also periodically from a separate | ||||
| reconciliation loop. | ||||
| 
 | ||||
|  | ||||
|  | ||||
| 
 | ||||
| _CPU Manager block diagram. `Policy`, `State`, and `Topology` types are | ||||
| factored out of the CPU Manager to promote reuse and to make it easier | ||||
|  | @ -119,6 +119,7 @@ type Manager interface { | |||
|   Start() | ||||
|   RegisterContainer(p *Pod, c *Container, containerID string) error | ||||
|   UnregisterContainer(containerID string) error | ||||
|   IsUnderCPUPresure() bool | ||||
|   State() state.Reader | ||||
| } | ||||
| 
 | ||||
|  | @ -127,11 +128,12 @@ type Policy interface { | |||
|   Start(s state.State) | ||||
|   RegisterContainer(s State, pod *Pod, container *Container, containerID string) error | ||||
|   UnregisterContainer(s State, containerID string) error | ||||
|   IsUnderCPUPresure() bool | ||||
| } | ||||
| 
 | ||||
| type CPUSet map[int]struct{} // set operations and parsing/formatting helpers | ||||
| 
 | ||||
| type CPUTopology TBD | ||||
| type CPUTopology // convenient type for querying and filtering CPUs | ||||
| ``` | ||||
| 
 | ||||
| #### Configuring the CPU Manager | ||||
|  | @ -329,6 +331,15 @@ func (p *dynamicPolicy) UnregisterContainer(s State, containerID string) error { | |||
|    directly from the shared pool, is too simplistic. | ||||
|     1. Mitigation: defer supporting this until a new policy tailored for | ||||
|        use with `isolcpus` can be added. | ||||
| 1. CPU exhaustion. Terminology: a no-CPU pod is defined here as having | ||||
|    at least one container with no or zero-valued CPU request. If all available | ||||
|    CPUs are allocated exclusively, additional steps must be taken to remove | ||||
|    any no-CPU pods from the node. In addition, the system must prevent further | ||||
|    no-CPU pods from being bound to the node. | ||||
|     1. Mitigation: Introduce a new CPUPressure node condition. This | ||||
|        condition causes any no-CPU pods to fail scheduler predicates for this | ||||
|        node and also fail node-level admission checks. Also evict no-CPU pods | ||||
|        when CPUPressure occurs. | ||||
| 
 | ||||
| ## Implementation roadmap | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue