diff --git a/content/zh/docs/tasks/manage-hugepages/scheduling-hugepages.md b/content/zh/docs/tasks/manage-hugepages/scheduling-hugepages.md index eb1666d8731f4..7e6171358b0ce 100644 --- a/content/zh/docs/tasks/manage-hugepages/scheduling-hugepages.md +++ b/content/zh/docs/tasks/manage-hugepages/scheduling-hugepages.md @@ -1,22 +1,41 @@ --- -approvers: +reviewers: - derekwaynecarr title: 管理巨页(HugePages) content_template: templates/task --- + {{% capture overview %}} -{{< feature-state state="alpha" >}} +{{< feature-state state="stable" >}} -作为 **alpha** 特性,Kubernetes 支持在 Pod 应用中使用预先分配的巨页(或称“大页面”,下文统称为“巨页”)。 本文描述了用户如何使用巨页,以及当前的限制。 + +作为 **GA** 特性,Kubernetes 支持在 Pod 应用中使用预先分配的巨页。本文描述了用户如何使用巨页,以及当前的限制。 {{% /capture %}} {{% capture prerequisites %}} -1. 为了使节点能够上报巨页容量,Kubernetes 节点必须预先分配巨页。 - 每个节点只能预先分配一种特定规格的巨页。 -1. 用户必须在整个系统中将专用的 **alpha** 特性开关 `HugePages` 设置为 true: `--feature-gates=HugePages=true`。 + +1. 为了使节点能够上报巨页容量,Kubernetes 节点必须预先分配巨页。每个节点只能预先分配一种特定规格的巨页。 节点会自动发现全部巨页资源,并作为可供调度的资源进行上报。 @@ -26,7 +45,18 @@ content_template: templates/task ## API + + 用户可以通过在容器级别的资源需求中使用资源名称 `hugepages-` 来使用巨页,其中的 size 是特定节点上支持的以整数值表示的最小二进制单位。 例如,如果节点支持 2048KiB 的页面规格, 它将暴露可供调度的资源 `hugepages-2Mi`。 与 CPU 或内存不同,巨页不支持过量使用(overcommit)。 +注意,在请求巨页资源时,还必须请求内存或 CPU 资源。 ```yaml apiVersion: v1 @@ -46,23 +76,49 @@ spec: resources: limits: hugepages-2Mi: 100Mi + memory: 100Mi + requests: + memory: 100Mi volumes: - name: hugepage emptyDir: medium: HugePages ``` -- 巨页的资源需求和限制必须相等。 该条件在指定了资源限制,而没有指定需求的情况下默认成立。 + + +- 巨页的资源请求值必须等于其限制值。该条件在指定了资源限制,而没有指定请求的情况下默认成立。 - 巨页是被隔离在 pod 作用域的,计划在将来的迭代中实现容器级别的隔离。 -- 巨页对 EmptyDir 卷提供支持,EmptyDir 卷所使用的巨页,不能够超出 pod 请求的内存容量。 +- 巨页可用于 EmptyDir 卷,不过 EmptyDir 卷所使用的巨页数量不能够超出 Pod 请求的巨页数量。 - 通过带有 `SHM_HUGETLB` 的 `shmget()` 使用巨页的应用,必须运行在一个与 `proc/sys/vm/hugetlb_shm_group` 匹配的补充组下。 +- 通过 ResourceQuota 资源,可以使用 `hugepages-` 标记控制每个命名空间下的巨页使用量, + 类似于使用 `cpu` 或 `memory` 来控制其他计算资源。 + + -## (待实现的)特性 +## 待实现的特性 - 在 pod 级别隔离的基础上,支持巨页在容器级别的隔离。 - 作为服务质量特性,保证巨页的 NUMA 局部性。 -- 支持 ResourceQuota 。 - 支持 LimitRange 。 {{% /capture %}}