-
Notifications
You must be signed in to change notification settings - Fork 14.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding a blog post for windows memory pressure eviction #48535
base: main
Are you sure you want to change the base?
Conversation
/assign @jsturtevant for technical review |
✅ Pull request preview available for checkingBuilt without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify site configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi. To make life easier for blog reviewers, can you look at https://kubernetes.io/docs/contribute/style/style-guide/ and adopt any guidance that is obviously also relevant for blog articles?
For example, headings should be sentence case, and new concepts should be italicized.
|
||
In Kubernetes 1.31, support for memory-pressure based eviction was added for Windows nodes. | ||
|
||
This post describes what these changes mean for you and how they may differ from usage on Linux nodes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I parse this as "This post describes what these changes mean for you and how these changes may differ from usage on Linux nodes.". If "they" means something else like "Windows node usage", please be explicit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I re-worded the summary - please take another look @bridgetkromhout - thanks!
|
||
## Additional Resources | ||
|
||
To gain a deeper understanding of how memory is managed on Windows, you may also find this article on [Physical and Virtual Memory in Windows 10](https://answers.microsoft.com/en-us/windows/forum/all/physical-and-virtual-memory-in-windows-10/e36fb5bc-9ac8-49af-951c-e7d39b979938) helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that Windows 11 is available, does this Windows 10 article from 2015 apply to the newer version also? Or is it scoped only to 10, and maybe 11 has some other info that we need to point to?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is still relevant and is the most informative article I could find on the topic
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is one detailed blog post 😮
|
||
Additionally, exposing the Commit usage for individial Pods and Containers through the `/stats/summary` API is being worked on as part of the [cAdvisor-les, CRI-full Container and Pod Stats](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2371-cri-pod-container-stats/README.md) enhancement. | ||
|
||
[windows-exporter](https://github.com/prometheus-community/windows_exporter) can also be configured to monitor and report on Commit memory usage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe mention it works for containers and node level today if that information is required now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated - PTAL
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall content looks good from sig-windows perspective
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few formatting and grammatical errors :)
Thanks @sftim - I made some updates so this blog post will better adhere to the style guides. |
/lgtm |
Currently, `kubectl top` continues to report Working Set memory. As a result, a Pod may be evicted for exceeding its memory requests or encounter memory allocation failures due to exceeding its `CommitLimit`, even when the _WorkingSet_ memory usage appears to be well within the expected bounds. This discrepancy can lead to confusion. | ||
|
||
Starting with v1.31, Windows nodes now report the global `CommitTotal` and `CommitLimit` for each node through the `/stats/summary` API endpoint. This information is available under the `windows-global-commit-memory` syscontainer API resource. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks out of date.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which part specifically?
I don't think this is out of date.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #48535 (comment)
Co-authored-by: Qiming Teng <[email protected]>
Co-authored-by: Qiming Teng <[email protected]>
Co-authored-by: Qiming Teng <[email protected]>
Co-authored-by: Qiming Teng <[email protected]>
Co-authored-by: Qiming Teng <[email protected]>
/lgtm |
/hold |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @marosset
- Please set the publication date to Tuesday 11th December 2024 (we'll update that after it merges). This is a change to the article path in source and to the front matter.
- Please add
draft: true
to the page front matter
(nit)
Ideally, also avoid writing component names such as kubelet in anything other than all-lowercase.
/lgtm cancel OK to LGTM this if it has a future publication date agreed with release comms, or it it's marked as draft and the publication date is set to the planned release date for K8s 1.32 Otherwise, reviewers should hold off there. |
ack - i'll make some updates early next week (after kubecon) and address all these comments |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@sftim - I made the following updates
|
I don't see this on https://github.com/orgs/kubernetes/projects/195/views/4 The advice in #48535 (comment) was conditional on this being accepted for the post-release comms series. @marosset can you liaise there ( |
I think it would make more sense for this to go out as an informal article. |
layout: blog | ||
title: "Windows Memory Pressure Eviction" | ||
slug: windows-memory-pressure-eviction | ||
date: 2024-12-11 | ||
draft: true | ||
author: > | ||
Mark Rossetti (Microsoft) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, try this:
layout: blog | |
title: "Windows Memory Pressure Eviction" | |
slug: windows-memory-pressure-eviction | |
date: 2024-12-11 | |
draft: true | |
author: > | |
Mark Rossetti (Microsoft) | |
layout: blog | |
title: "Windows Memory Pressure Eviction" | |
slug: windows-memory-pressure-eviction | |
date: 2024-12-09 | |
author: > | |
Mark Rossetti (Microsoft) |
and change the path in the front matter to match the new date.
|
||
Starting with v1.31, Windows nodes report the global `CommitTotal` and `CommitLimit` for each node through the `/stats/summary` API endpoint. This information is available under the `windows-global-commit-memory` named object in the `systemContainers` collection: | ||
|
||
```json= |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use console
here because this is not a JSON document
|
||
Understanding the distinction between _Working Set_ and _Commit_ memory and being able to monitor both is critical for maintaining the stability of individual Pod workloads and the entire Windows node. | ||
|
||
Currently, `kubectl top` continues to report Working Set memory. As a result, a Pod may be evicted for exceeding its memory requests or encounter memory allocation failures due to exceeding its `CommitLimit`, even when the _Working Set_ memory usage appears to be well within the expected bounds. This discrepancy can lead to confusion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you mean:
Currently, `kubectl top` continues to report Working Set memory. As a result, a Pod may be evicted for exceeding its memory requests or encounter memory allocation failures due to exceeding its `CommitLimit`, even when the _Working Set_ memory usage appears to be well within the expected bounds. This discrepancy can lead to confusion. | |
Before v1.31, the values you saw from `kubectl top` reported Working Set memory. As a result, a Pod could have been evicted for exceeding its memory requests, or a Pod might have encountered memory allocation failures (due to exceeding its `CommitLimit`) - and this could happen even when the _Working Set_ memory usage appeared to be well within the expected bounds. This discrepancy could have led to confusion. |
It's not clear if v1.31 improved things.
To be clear: this won't be a post-release blog article. I'd got mixed up and thought this was part of formal post-release comms. |
/hold It'll need a new release date and we'll need to update this to avoid people inferring that the feature was part of the v1.32 release. Sorry about the wait on reviews here. OK to unhold once a publication date is agreed. |
Description
Support for memory-pressure based eviction for Windows nodes was added in K8s v1.31.
Documentation on k8s.io website was added with #47306 but would also like to publish a blog post to cover some of the more Windows specific behaviors
Issue
/sig windows