diff --git "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" index cc1752d46a3d9dad4f7b1fe477caa598dd36afc4..28d039b63449f0efb04395b1b093cedcdaf6a90d 100644 --- "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" +++ "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" @@ -33,7 +33,7 @@ - 1. 海光支持ASID复用扩展启动的CSV1/2虚拟机个数 - 2. CSV1/2共用15个密钥 - 3. CSV1/2/3共用500个密钥 -- 4. 海光C86-4G的54xx、74xx支持CSV3,34xx不支持CSV1/2/3 +- 4. 海光C86-4G的54xx、74xx均支持CSV1/2/3,34xx中部分型号不支持CSV1/2/3,34xx遇到不支持CSV1/2/3时请联系海光确认 ## Bootloader 版本查看 海光2号配置 diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" index cb7cedb9dc8ebcec44a9000c119e2be1c28948bb..34ff64b42feca35d154850748f1548bc49b80bba 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" @@ -117,4 +117,56 @@ dmesg | grep CSV * dmesg信息如果包含“CSV3 support unavailable”,则表示主机内核不能启动/运行CSV3虚拟机: -![linux-5.10-4.19-csv3-support-unavailable](../../assets/CSV/linux-5.10-4.19-csv3-support-unavailable.png) \ No newline at end of file +![linux-5.10-4.19-csv3-support-unavailable](../../assets/CSV/linux-5.10-4.19-csv3-support-unavailable.png) + +## 主机Linux部署海光机密计算虚拟机建议 + +### 主机Linux内核需配置内核命令行参数 + +为了让各种型号海光CPU能够应用合适的机密计算能力,下表1列出了主机Linux启动时的必要内核命令行参数和说明。 + +表1 主机Linux内核命令行参数及其说明 + +| CPU | 主机Linux的内核命令行参数 | +| --- | --- | +| 海光2号 | kvm-amd.sev=1 mem_encrypt=on1 | +| 海光C86-3G | kvm-amd.sev=1 kvm-amd.sev_es=1 mem_encrypt=on1 | +| 海光C86-4G | kvm-amd.sev=1 kvm-amd.sev_es=1 mem_encrypt=on1 csv_mem_percentage=XX2 | + +- 1. `mem_encrypt=on`表示主机Linux开启SME功能,开启该功能可以保证主机Linux运行时,内存中的数据是加密的,是一种主机侧的内存保护;这是一个可选内核命令行参数,运行海光机密虚拟机不强制要求添加该内核命令行参数。 +- 2. `csv_mem_percentage=XX`是使用CSV3功能时,最大可占用服务器总物理内存的比例,其中[XX](#csv3-mem-cmdline)是十进制数字,[XX](#csv3-mem-cmdline)最大为80。例如,当系统内存总量为200G,[XX](#csv3-mem-cmdline)为50时,表示可提供服务器总物理内存的 *50%* (即100G)给CSV3功能使用。 + +### 海光机密计算虚拟机分配内存说明 + +**虚拟机分配内存**:是指qemu/libvirt指定的虚拟机的内存。例如,`/usr/bin/qemu-system-x86_64 ... -m 2G ...`表示为虚拟机分配内存为2G。下表2列出了海光机密计算**虚拟机分配内存**要求: + +表2 海光机密计算虚拟机分配内存要求 + +| CPU | 虚拟机分配内存总量要求 | +| --- | --- | +| 海光2号 | 所有CSV1虚拟机 < *(总物理内存 * 95%)*1 | +| 海光C86-3G | 所有CSV1/2虚拟机 < *(总物理内存 * 95%)*1 | +| 海光C86-4G | 1. 所有CSV1/2虚拟机 < *(总物理内存 * (95 - ([XX](#csv3-mem-cmdline) * 1.06))%)*1
2. 所有CSV3虚拟机 < *(总物理内存 * [XX](#csv3-mem-cmdline)% * 95%)* | + +* 1. 如果主机总物理内存本身就很小,请保证预留2G内存不分配给CSV1/2虚拟机 + +#### 海光2号运行海光机密计算虚拟机的分配内存说明 + +海光CSV1虚拟机创建阶段会直接锁住**虚拟机的分配内存**。因此,主机上创建的**所有CSV1虚拟机分配内存总量** < **总物理内存**。考虑到内核、系统软件等占用内存的情况,建议用户至少预留 *max(总物理内存 * 5%,2G)* 。 + +* **例子:**
假设主机总物理内存为100G,这时可以运行最多 *15* 个CSV1虚拟机,分配给所有CSV1虚拟机的总内存应 < 95G。分配给单个CSV1虚拟机的内存可以由用户自己决定,建议分配给单个CSV1虚拟机的内存 >= 1G。 + +#### 海光C86-3G运行海光机密计算虚拟机的分配内存说明 + +海光CSV1/2虚拟机创建阶段会直接锁住**虚拟机的分配内存**。因此,主机上创建的**所有CSV1/2虚拟机分配内存总量** < **总物理内存**。考虑到内核、系统软件等占用内存的情况,建议用户至少预留 *max(总物理内存 * 5%,2G)* 。 + +* **例子:**
假设主机总物理内存为100G,这时可以运行最多 *15* 个CSV1/2虚拟机,分配给所有CSV1/2虚拟机的总内存应 < 95G。CSV1/2这2种类型机密虚拟机的具体数量分别由用户自己决定。分配给单个CSV1/2虚拟机的内存可以由用户自己决定,建议分配给单个CSV1/2虚拟机的内存 >= 1G。 + +#### 海光C86-4G运行海光机密计算虚拟机的分配内存说明 + +在海光C86-4G上,为了支持运行CSV3虚拟机,需要在Linux内核命令行上添加`csv_mem_percentage=XX`声明可用于CSV3功能的内存总量,这时: + +- 总物理内存中,只有 *(100 - [XX](#csv3-mem-cmdline))%* 的内存可用于CSV1/2**虚拟机分配内存**。考虑到内核、系统软件、虚拟机额外缓冲等潜在的内存使用情况,建议用户至少预留 *max(((总物理内存 * 5%) + (总物理内存 * [XX](#csv3-mem-cmdline)% * 6%)),2G)* 。 +- 总物理内存中,有 *[XX](#csv3-mem-cmdline)%* 的内存可用于CSV3功能,其中涉及到CSV3虚拟机的`内存`、`嵌套页表(NPT)`、`寄存器状态`、`虚拟机控制块`的使用,建议所有CSV3的**虚拟机分配内存** <= *总物理内存 * [XX](#csv3-mem-cmdline)% * 95%* 。 + +* **例子:**
假设主机总物理内存为500G,且[XX](#csv3-mem-cmdline)的值为 *60* (即300G),这时可运行最多 *500* 个CSV1/2/3虚拟机,其中分配给所有CSV1/2虚拟机的总内存应 < 157G;分配给所有CSV3虚拟机的总内存应 < 285G。CSV1/2/3这3种类型机密虚拟机的具体数量分别由用户自己决定,但是考虑到可分配给所有CSV1/2虚拟机的总内存 < 157G,所以建议CSV1/2虚拟机总数量 < 157个,且分配给单个CSV1/2虚拟机的内存 >= 1G;考虑到分配给所有CSV3虚拟机的总内存应 < 285G,所以建议CSV3虚拟机总数量 < 285个,且分配给单个CSV3虚拟机的内存 >= 1G。 \ No newline at end of file