---
title: 约束与限制
description: "机器的内存插法要求NUMA间对称。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC2/confidt/kunpengtee_16_0006.html
sourcePath: /source/zh/kunpengboostkithistory/252RC2/confidt/kunpengtee_16_0006.html
indexId: b5c5965f7fcad9f2af7096531cf55bf8c003e41614eae9cd96487f74db925b6b72
---
# 约束与限制

#### 内存插法约束

机器的内存插法要求NUMA间对称。

- 支持4/8/12/16/20/28/32根。
- 支持32G/64G两种内存规格，不支持混插。
- 基于  计算产品内存配置助手(https://info.support.huawei.com/computing/smca/?language=zh)
插入内存。


#### BIOS菜单约束

1. 关闭3路交织。
2. 支持DIE交织Disable、Enable两种模式。


#### 操作系统约束

主机Host、机密虚拟机Guest配套openEuler 24.03 LTS SP2操作系统。


#### SWIOTLB Buffer特性限制

机密虚拟机通过SWIOTLB Buffer共享内存与外设通信，该区域大小默认值为64MB，高负载IO通信场景下，可能出现SWIOTLB Buffer空间不足问题，在Guest OS中执行如下命令，若收到“swiotlb buffer is full”的错误日志回显，可确认出现此问题。
```
dmesg | grep "swiotlb buffer is full"
```


如果确认上述问题存在，建议通过修改Guest OS swiotlb启动参数来调大SWIOTLB Buffer空间，方法如下：- QEMU命令行启动方式，SWIOTLB启动参数配置方法如下所示。

```
-append "swiotlb=
x
,force"
```


- libvirt xml启动方式，SWIOTLB启动参数配置方法如下所示。

```
<cmdline>swiotlb=x,force</cmdline>
```


  “x”为SWIOTLB Buffer的分片数，每个分片大小为2KB，对应的SWIOTLB Buffer大小为x*2KB。SWIOTLB Buffer默认64MB大小，对应分片数量为32768，增加x的数值即可调大SWIOTLB Buffer（需保证Buffer大小64MB对齐）。例如“x”为262144时对应SWIOTLB Buffer为512MB。 SWIOTLB Buffer占用非安全内存，若Host OS收到“Out of memory: Killed process xxx (qemu-kvm)”错误日志，可确认当前系统非安全内存不足，导致机密虚拟机退出。 SWIOTLB Buffer特性会占用机密虚拟机安全内存，当前机密虚拟机安全内存最小规格为1GB大小。


#### 安全内存粒度约束

机密虚拟机的安全内存须按2MB对齐。


#### 机密虚拟机性能约束

- 机密虚拟机CPU所绑定的NUMA需要和安全内存所分配的NUMA相同。

- 机密虚拟机CPU绑定的NUMA需要与网卡亲和NUMA相同。执行如下命令查询网卡亲和NUMA。

```
cat /sys/class/net/
$net_name
/device/numa_node
```

net_name为网卡设备名称，可在Guest OS中通过ip addr查看。


预期示例如下：

  - 查询到网卡亲和NUMA为1。
  - 机密虚拟机的libvirt xml文件配置CPU绑定到NUMA 1。


#### sysctl_overcommit_memory限制

BIOS提供安全内存配置auto模式，BIOS将分配尽可能大的安全内存，此时安全内存将大于非安全内存。当启动机密虚拟机的ram size大于非安全内存时，需要允许mmap的虚拟地址空间大于物理地址空间，否则机密虚拟机将启动失败，即启动机密虚拟机前需要保证sysctl_overcommit_memory=1。需执行以下命令：

```
echo 1 > /proc/sys/vm/overcommit_memory
```


#### 不支持超线程（SMT）

当用户使能CPU超线程能力后，可能存在针对机密计算的侧信道攻击等风险，因此业界建议在禁用SMT的系统上运行机密计算，关闭SMT的指导如下。

1. 在BIOS配置选项，进入“Advanced”>“Power And Performance Configuration”配置菜单。
2. 进入“CPU PM Control”配置菜单。
3. 将“SMT2”选项配置为“Disabled”。


#### 不支持超分配

CPU和内存超分配当前不支持。
