NetBSD 项目开发人员
NVMM 包括一个在系统内核级别运行并协调对硬件虚拟化机制的访问的驱动程序,以及一个在用户空间中运行的 Libnvmm 堆栈。 内核组件和用户空间之间的交互是通过IOCTL进行的。 NVMM 区别于 KVM 等虚拟机管理程序的一个特性是
然而,Libnvmm 本身不包含模拟器功能,仅提供一个 API,允许您将 NVMM 支持集成到现有模拟器中,例如 QEMU。 该API涵盖了创建和启动虚拟机、为客户系统分配内存以及分配VCPU等功能。 为了提高安全性并减少可能的攻击媒介,libnvmm 仅提供明确请求的函数 - 默认情况下,不会自动调用复杂的处理程序,并且如果可以避免,则可能根本不会使用它们。 NVMM 试图让事情变得简单,而不是变得太复杂,并允许您控制工作的尽可能多的方面。
NVMM 的内核级部分与 NetBSD 内核紧密集成,并通过减少来宾操作系统和主机环境之间的上下文切换次数来提高性能。 在用户空间方面,libnvmm 尝试聚合常见的 I/O 操作并避免进行不必要的系统调用。 内存分配系统基于 pmap 子系统,它允许您在系统内存不足的情况下将访客内存页面移出到交换分区。 NVMM 没有全局锁,并且可扩展性良好,允许您同时使用不同的 CPU 核心来运行不同的来宾虚拟机。
基于QEMU的解决方案已经准备好,使用NVMM来启用硬件虚拟化机制。 将准备好的补丁纳入 QEMU 主要结构中的工作正在进行中。 QEMU+NVMM组合已经
来源: opennet.ru