2.15. 管理客户机内存
如果要调整客户机内存设置以适应特定用例,可通过编辑客户机的 YAML 配置文件来实现。容器原生虚拟化可用于配置客户机内存过量使用,以及禁用客户机内存开销核算。
这两个程序均有一定程度的风险。只有当您是经验丰富的管理员时方可继续。
2.15.1. 配置客户机内存过量使用
如果您的虚拟工作负载需要的内存超过可用内存,您可利用内存过量使用来为您的虚拟机实例分配全部或大部分主机内存。启用“内存过量使用”意味着您可以最大程度利用通常为主机保留的资源。
例如,如果主机具有 32 Gb RAM,则可利用内存过量功能,运行 8 个每个分配了 4GB RAM 的虚拟机。该分配方案假设所有虚拟机不会同时使用分配给它们的所有内存。
流程
要明确告知虚拟机实例它的可用内存超过集群请求内存,请编辑虚拟机配置文件,并将
spec.domain.memory.guest
设置为超过spec.domain.resources.requests.memory
的值。这一过程即为“内存过量使用”。在本例中,对集群的请求内存为
1024M
,但虚拟机实例被告知它有2048M
可用。只要相关的节点上有足够的可用内存,虚拟机实例最多可消耗 2048M 内存。kind: VirtualMachine spec: template: domain: resources: requests: memory: 1024M memory: guest: 2048M
注意如果节点处于内存压力下,则适用于 Pod 的驱除规则也适用于虚拟机实例。
创建虚拟机:
$ oc create -f <file name>.yaml
2.15.2. 禁用客户机内存开销核算
该程序仅对特定用例有用,且仅限由高级用户操作。
除了您所请求的内存量之外,每个虚拟机实例还会额外请求少量内存。这部分额外内存将用于打包每个 VirtualMachineInstance
进程的基础结构。
虽然通常不建议这么设置,但可以通过禁用客户机内存开销核算来提高节点上的虚拟机实例密度。
流程
要禁用客户机内存开销核算,请编辑 YAML 配置文件并将
overcommitGuestOverhead
值设置为true
。默认禁用此参数。kind: VirtualMachine spec: template: domain: resources: overcommitGuestOverhead: true requests: memory: 1024M
注意如果启用
overcommitGuestOverhead
,则会在内存限值中添加客户机开销(如果存在)。创建虚拟机:
$ oc create -f <file name>.yaml