You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-node/1769-memory-manager/README.md
+43-70Lines changed: 43 additions & 70 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -429,6 +429,7 @@ Memory pinning will be validated for Topology Manager `single-numa-node` and `re
429
429
430
430
#### Phase 2: Beta (target v1.22)
431
431
- Extend E2E test coverage.
432
+
- Provide memory manager metrics under pod resources API.
432
433
- Feature gate is enabled by default.
433
434
- Provide beta-level documentation.
434
435
@@ -531,7 +532,7 @@ Yes, the admission flow changes for a pod in Guaranteed QoS class. With the Memo
531
532
feature, can it break the existing applications?). -->
532
533
533
534
***What happens if we reenable the feature if it was previously rolled back?**
534
-
The Memory Manager utlizes State file to track memory assignments. If State file is not valid, it must be removed and kubelet restarted. E.g., State file might become invalid when kube/system reserved have changed (increased), which may lead to a situation when some containers cannot be started.
535
+
The Memory Manager utilizes the state file to track memory assignments. If State file is not valid, it must be removed and kubelet restarted. E.g., State file might become invalid when kube/system reserved have changed (increased), which may lead to a situation when some containers cannot be started.
535
536
536
537
***Are there any tests for feature enablement/disablement?**
537
538
Yes, there is a number of Unit Tests designated for State file validation.
@@ -541,69 +542,65 @@ Yes, there is a number of Unit Tests designated for State file validation.
541
542
_This section must be completed when targeting beta graduation to a release._
542
543
543
544
***How can a rollout fail? Can it impact already running workloads?**
544
-
Try to be as paranoid as possible - e.g., what if some components will restart
545
-
mid-rollout?
545
+
It is possible that the state file will have inconsistent data during the rollout, because of the kubelet restart, but
546
+
you can easily to fix it by removing memory manager state file and run kubelet restart. It should not affect any running
547
+
workloads.
548
+
546
549
547
550
***What specific metrics should inform a rollback?**
551
+
The pod may fail with the admission error because the kubelet can not provide all resources aligned from the same NUMA node.
552
+
You can see the error message under the pod events.
548
553
549
554
***Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?**
550
-
Describe manual testing that was done and the outcomes.
551
-
Longer term, we may want to require automated upgrade/rollback tests, but we
552
-
are missing a bunch of machinery and tooling and can't do that now.
555
+
Tested it manually by replacing the kubelet binary on the node with the `Static` memory manager policy, but I failed
556
+
to find correct procedure how to test upgrade from 1.21 to my custom build with updated kubelet binary.
553
557
554
558
***Is the rollout accompanied by any deprecations and/or removals of features, APIs,
555
559
fields of API types, flags, etc.?**
556
-
Even if applying deprecation policies, they may still surprise some users.
560
+
No.
557
561
558
562
### Monitoring Requirements
559
563
560
564
_This section must be completed when targeting beta graduation to a release._
561
565
562
566
***How can an operator determine if the feature is in use by workloads?**
563
-
Ideally, this should be a metric. Operations against the Kubernetes API (e.g.,
564
-
checking if there are objects with field X set) may be a last resort. Avoid
565
-
logs or events for this purpose.
567
+
The memory manager data will be available under pod resources API. When it configured with the static policy
568
+
you will see memory related data during call to the pod resources API List method under the container.
566
569
567
570
***What are the SLIs (Service Level Indicators) an operator can use to determine
568
571
the health of the service?**
569
-
-[ ] Metrics
570
-
- Metric name:
571
-
-[Optional] Aggregation method:
572
-
- Components exposing the metric:
573
-
-[ ] Other (treat as last resort)
574
-
- Details:
572
+
573
+
*For cluster admins:*
574
+
575
+
The assumption that the feature should work, once memory manager static policy and reserved memory flags configured under the kubelet
576
+
and kubelet succeeded to restart.
577
+
578
+
*For a pod author:*
579
+
580
+
* Pod succeeded to start. You have two options to verify if containers pinned to the NUMA node
581
+
- Via pod resources API, you will need to connect to grpc socket and get information from it, see [pod resource API doc page](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/#monitoring-device-plugin-resources) for more information.
582
+
- Checking the relevant container CGroup under the node.
583
+
584
+
* Pod failed to start because of the admission error.
585
+
586
+
To understand the reason you will need to check via pod resources API
587
+
the amount of allocatable memory and memory reserved by containers.
575
588
576
589
***What are the reasonable SLOs (Service Level Objectives) for the above SLIs?**
577
-
At a high level, this usually will be in the form of "high percentile of SLI
578
-
per day <= X". It's impossible to provide comprehensive guidance, but at the very
579
-
high level (needs more precise definitions) those may be things like:
580
-
- per-day percentage of API calls finishing with 5XX errors <= 1%
581
-
- 99% percentile over day of absolute value from (job creation time minus expected
582
-
job creation time) for cron job <= 10%
583
-
- 99,9% of /health requests per day finish with 200 code
590
+
This does not seem relevant to this feature.
584
591
585
592
***Are there any missing metrics that would be useful to have to improve observability
586
593
of this feature?**
587
594
Describe the metrics themselves and the reasons why they weren't added (e.g., cost,
588
595
implementation difficulties, etc.).
596
+
Currently, for the pod author, it is impossible to know containers NUMA pinning without access to the node.
589
597
590
598
### Dependencies
591
599
592
600
_This section must be completed when targeting beta graduation to a release._
593
601
594
602
***Does this feature depend on any specific services running in the cluster?**
595
-
Think about both cluster-level services (e.g. metrics-server) as well
596
-
as node-level agents (e.g. specific version of CRI). Focus on external or
597
-
optional services that are needed. For example, if this feature depends on
598
-
a cloud provider API, or upon an external software-defined storage or network
599
-
control plane.
600
-
601
-
For each of these, fill in the following—thinking about running existing user workloads
602
-
and creating new ones, as well as about cluster-level services (e.g. DNS):
603
-
-[Dependency name]
604
-
- Usage description:
605
-
- Impact of its outage on the feature:
606
-
- Impact of its degraded performance or high-error rates on the feature:
603
+
No.
607
604
608
605
609
606
### Scalability
@@ -617,45 +614,26 @@ _For GA, this section is required: approvers should be able to confirm the
617
614
previous answers based on experience in the field._
618
615
619
616
***Will enabling / using this feature result in any new API calls?**
0 commit comments