Skip to content

Commit

Permalink
Respond to feedback
Browse files Browse the repository at this point in the history
Signed-off-by: James Sturtevant <[email protected]>
  • Loading branch information
jsturtevant committed Sep 30, 2024
1 parent 1204ef3 commit c5b33b5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
24 changes: 15 additions & 9 deletions keps/sig-windows/4885-windows-cpu-and-memory-affinity/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ checklist items _must_ be updated for the enhancement to be released.

Items marked with (R) are required *prior to targeting to a milestone / release*.

- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
- [x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
- [x] (R) Design details are appropriately documented
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
Expand Down Expand Up @@ -191,19 +191,24 @@ demonstrate the interest in a KEP within the wider Kubernetes community.
[experience reports]: https://github.com/golang/go/wiki/ExperienceReports
-->
Add support for CPU and memory affinity on windows by enabling the cpu, memory and topology managers for Windows, which are currently not enabled.

Enables Low latency workloads co-hosted on the same nodes in Windows Server show noisy neighbor behavior preventing them to achieve their performance goals. This feature is needed to add the necessary isolation to accomplish both high performance and co-hosting efficiency. The feature is enabled and available in Linux and Windows users are asking for the same features on Windows.
Add support for CPU and memory affinity for Windows nodes by enabling the cpu, memory and topology managers for Windows,
which are currently not enabled.

Enabling Low latency workloads co-hosted on the same nodes in Windows Server show noisy neighbor behaviors
preventing them from achieving their expected performance goals.
This feature is needed to add the necessary isolation to accomplish both high performance and co-hosting efficiency.
The feature is enabled and available in Linux and Windows users are asking for the same features on Windows.

### Goals

<!--
List the specific goals of the KEP. What is it trying to achieve? How will we
know that this has succeeded?
-->
- Enable CPU manager for Windows allowing for CPU affinity
- Enable Memory Manager for Windows allowing for Memory Affinity
- Enable Topology Manager for Windows allowing for coordination of Memory and CPU affinity
- Enable CPU manager for Windows allowing for CPU affinity for configured pods
- Enable Memory Manager for Windows allowing for memory affinity for configured pods
- Enable Topology Manager for Windows allowing for coordination of Memory and CPU affinity at the node level for scheduled pods

### Non-Goals

Expand All @@ -229,7 +234,7 @@ nitty-gritty.
The proposal requires very little changes to the code for the managers and instead extends the [Windows](https://learn.microsoft.com/en-us/windows/win32/procthread/processor-groups) concepts to a CAdvisor mapping to enable the [topology structure in kubelet](https://github.com/kubernetes/kubernetes/blob/cede96336a809a67546ca08df0748e4253ec270d/pkg/kubelet/cm/cpumanager/topology/topology.go#L34-L39).

There are no plans to change the core logic for selecting CPU's and NUMA nodes in the CPU/Memory/Tolopology managers from the existing KEPS ([memory-manager](keps/sig-node/1769-memory-manager)/[cpu-manager](keps/sig-node/3570-cpu-manager)/[topology-manager](keps/sig-node/693-topology-manager")). The logic is currently in platform agnostic
structure so the selection process is does not require changes to adapt for Windows. The Windows specific considerations for each of the managers will be covered in separate sections in this document.
structures so the selection process is does not require changes for adoption on Windows. The Windows specific considerations for each of the managers will be covered in separate sections in this document.


### User Stories (Optional)
Expand Down Expand Up @@ -330,7 +335,7 @@ each processor is identified by its group number and its group-relative processo

In Cri we will add the following structure to the `WindowsContainerResources` in CRI:

```golang
```protobuf
message WindowsCpuGroupAffinity {
// CPU mask relative to this CPU group.
uint64 cpu_mask = 1;
Expand Down Expand Up @@ -490,7 +495,7 @@ https://storage.googleapis.com/k8s-triage/index.html
We expect no non-infra related flakes in the last month as a GA graduation criteria.
-->

- e2e_node will need to be enabled for windows to add
- e2e_node will need to be enabled for windows to add coverage

### Graduation Criteria

Expand Down Expand Up @@ -525,6 +530,7 @@ Below are some examples to consider, in addition to the aforementioned [maturity

- Feature implemented behind a feature flag
- Initial basic e2e tests in Windows e2e suite are added
- unit tests for Windows specific components are added

#### Beta

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ latest-milestone: "v1.32"
# The milestone at which this feature was, or is targeted to be, at each stage.
milestone:
alpha: "v1.32"
beta: "v1.33"
stable: "v1.34"
beta: ""
stable: ""

# The following PRR answers are required at alpha release
# List the feature gate name and the components for which it must be enabled
Expand Down

0 comments on commit c5b33b5

Please sign in to comment.