# 虚拟化<a name="ZH-CN_TOPIC_0185681960"></a>

## Qemu<a name="section14349202621712"></a>

openEuler 1.0 中配套 Qemu 为 4.0.0 版本，相比早期版本修复了诸多缺陷并进行了特性和设备支持能力的增强，重要更新如下：

**特性增强**

-   热迁移 postcopy 支持 hugpages 和 hugetlbfs
-   支持 GICv3 KVM 的热迁移
-   热迁移 postcopy 支持限速，支持 migrate\_pause，支持 migrate\_recover
-   虚拟机内呈现 CPU frequency（GuestOS 需要 4.19 以及更高版本内核）
-   虚拟机内部呈现 CPU topology和cache信息

**设备支持**

-   PCI/PCIe：支持新的 pcie-root-port 设备，新的 virt 类型主板默认 disable 了 PCIe-to-PCI-bridge 上的 SHPC
-   支持 SMMUv3 模拟（soft-iommu\)
-   virt 类型主板开始支持 512 虚拟CPU （注意不支持单个虚拟机的CPU数量超过所在的物理机的CPU数量）
-   将 PCIe ECAM Region 扩大到 256M，支持更多的 PCI 设备
-   virt4.0 guest machine type 支持超过 1TB RAM

**性能优化**

-   I/O 线程性能优化，提升多磁盘并发读写场景下的性能

## KVM<a name="section2663102117408"></a>

基于 4.19 版本内核的KVM进行 bug 修复、社区新特性回合和特性增强，重点能力如下：

**虚拟机动态IPA**

openEuler 1.0 通过修改 Stage2 页表的分级、布局，支持用户态配置动态的IPA位数，可以支持最多48位IPA

**Stage2 1G大页支持**

通过修改 Stage2 缺页异常处理逻辑，支持 Stage2 1G 大页。

**Perf性能统计支持ARM虚拟化**

支持命令“perf kvm stat record/report”，在虚拟机或 vCPU 粒度统计 exit、trap 的类型、次数和时间

**iscsi kworker自适应IO性能提升**

iscsi 默认创建的 order workqueue 调度范围是全 CPU，当其与对应网卡中断不在相同的 numa node 时会导致性能下降，通过新增 flag 控制其创建 workqueue 在指定对应的 NUMA node 运行，通过跟随对应的网卡中断保持同NUMA node，提升 IPSAN 访问 IO 性能。

**IRQfd路径注入中断优化**

优化通过 IRQfd 路径注入的中断，降低 vhost-user、vhost-net、GICv3+ 直通设备（网卡、磁盘）等场景下 CPU 资源消耗。

## Open vSwitch<a name="section562416012180"></a>

openEuler 1.0 中配套的 Open vSwitch 为开源社区的 2.11.1 版本，仅进行了 openEuler 的内核版本适配。

