---
title: 约束与限制
description: "硬件服务器需搭载鲲鹏920新型号处理器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0006.html
sourcePath: /source/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0006.html
indexId: 57c37ec414c91c57be2351ea5fb503f3e8fc2b9776d66522c64e7c91c558e71b65
---
# 约束与限制

#### 应用限制

硬件服务器需搭载鲲鹏920新型号处理器。

- 鲲鹏920 7280Z处理器
- 鲲鹏920 7270Z处理器
- 鲲鹏920 7285Z处理器
- 鲲鹏920 5253Z处理器
- 鲲鹏920 5252Z处理器
- 鲲鹏920 5235Z处理器
- 鲲鹏920 5230Z处理器
- 鲲鹏920 7260Z处理器
- 鲲鹏920 7260Y处理器
- 鲲鹏920 7250Y处理器
- 鲲鹏920 5258F处理器


#### 内存插法约束

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

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


#### BIOS菜单约束

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


#### SWIOTLB Buffer特性限制

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

```
dmesg | grep "swiotlb buffer is full"
```


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

机密虚拟机的安全内存须按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关闭SMT。


#### 不支持超分配

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


#### libvirt支持命令

libvirt在机密虚拟机中支持的命令有限，具体支持命令如libvirt支持命令所示：


**表1 libvirt支持命令说明**

| virsh子命令 | 命令说明 | 可选参数 | 机密虚拟机支持情况 | 普通虚拟机支持情况 |
| --- | --- | --- | --- | --- |
| define | 从指定xml文件定义一个虚拟机域。 | \-\-validate | √ | √ |
| undefine | 销毁一个虚拟机域。 | \-\-managed\-save | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-storage | √ | √ |
| undefine | 销毁一个虚拟机域。 | \-\-remove\-all\-storage | √ | √ |
| undefine | 销毁一个虚拟机域。 | \-\-delete\-storage\-volume\-snapshots | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-wipe\-storage | √ | √ |
| undefine | 销毁一个虚拟机域。 | \-\-snapshots\-metadata | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-checkpoints\-metadata | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-nvram | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-keep\-nvram | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-tpm | x | √ |
| undefine | 销毁一个虚拟机域。 | \-\-keep\-tpm | x | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-console | √ | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-paused | x | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-autodestroy | √ | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-bypass\-cache | √ | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-force\-boot | x | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-pass\-fds | x | √ |
| start | 启动一个已定义过的虚拟机。 | \-\-reset\-nvram | x | √ |
| destroy | 销毁一个运行中的虚拟机。 | \-\-graceful | √ | √ |
| destroy | 销毁一个运行中的虚拟机。 | \-\-remove\-logs | √ | √ |
| console | 通过串口连接、登录到虚拟机内部。 | \-\-devname | √ | √ |
| console | 通过串口连接、登录到虚拟机内部。 | \-\-force | √ | √ |
| console | 通过串口连接、登录到虚拟机内部。 | \-\-resume | x | √ |
| console | 通过串口连接、登录到虚拟机内部。 | \-\-safe | √ | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-console | √ | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-paused | x | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-autodestroy | √ | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-pass\-fds | x | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-validate | √ | √ |
| create | 从指定xml创建并启动一个虚拟机。 | \-\-reset\-nvram | x | √ |
| attach\-disk | 添加磁盘设备。 | \-\-subdriver | √ | √ |
| attach\-disk | 添加磁盘设备。 | \-\-live | √ | √ |
| attach\-disk | 添加磁盘设备。 | \-\-persistent | √ | √ |
| detach\-disk | 删除磁盘设备。 | \-\-live | √ | √ |
| detach\-disk | 删除磁盘设备。 | \-\-persistent | √ | √ |
| attach\-interface | 添加网络接口。 | \-\-model | √ | √ |
| attach\-interface | 添加网络接口。 | \-\-live | √ | √ |
| attach\-interface | 添加网络接口。 | \-\-persistent | √ | √ |
| detach\-interface | 删除网络接口。 | \-\-live | √ | √ |
| detach\-interface | 删除网络接口。 | \-\-persistent | √ | √ |
| attach\-device | 基于xml添加设备。 | \-\-live | √ | √ |
| attach\-device | 基于xml添加设备。 | \-\-persistent | √ | √ |
| detach\-device | 基于xml删除设备。 | \-\-live | √ | √ |
| detach\-device | 基于xml删除设备。 | \-\-persistent | √ | √ |
| tmm | 查看tmm相关信息，包括安全内存使用信息。 | \-\-dev | √ | x |
| tmm | 查看tmm相关信息，包括安全内存使用信息。 | \-\-detail | √ | x |
| √：机密虚拟机或普通虚拟机支持对应的virsh子命令。 x：机密虚拟机或普通虚拟机不支持对应的virsh子命令。 | √：机密虚拟机或普通虚拟机支持对应的virsh子命令。 x：机密虚拟机或普通虚拟机不支持对应的virsh子命令。 | √：机密虚拟机或普通虚拟机支持对应的virsh子命令。 x：机密虚拟机或普通虚拟机不支持对应的virsh子命令。 | √：机密虚拟机或普通虚拟机支持对应的virsh子命令。 x：机密虚拟机或普通虚拟机不支持对应的virsh子命令。 | √：机密虚拟机或普通虚拟机支持对应的virsh子命令。 x：机密虚拟机或普通虚拟机不支持对应的virsh子命令。 |
