Linux系统虚拟化
文章平均质量分 89
Linux系统虚拟化
ceiling1lox
这个作者很懒,什么都没留下…
展开
-
内核虚拟化:虚拟中断注入
KVM_CREATE_IRQCHIP用于虚拟机向VMM的虚拟apic发送中断请求,再有VMM将中断交付虚拟cpu处理,当kvm_vm_ioctl函数被调用并处理KVM_IRQ_LINE请求时会调用kvm_vm_ioctl_irq_line,该函数调用kvm_set_irq完成中断注入,其核心任务就是根据中断控制器类型调用之前所绑定的中断回调函数,这些中断回调函数会将中断请求写入虚拟cpu的vmcs中。然后会调用kvm_irq_delivery_to_apic负责将中断分发给lapic。原创 2024-03-12 19:44:06 · 351 阅读 · 1 评论 -
中断虚拟化之APIC虚拟化
最近在阅读《深度探索Linux系统虚拟化:原理与实现》这本书来学习虚拟化方面的知识,通过读书笔记的方式记录学习过程中的重要知识点。原创 2024-03-04 20:22:40 · 744 阅读 · 1 评论 -
内核虚拟化:vm exit和userspace exit
记录一次在阅读kvm内核源码时遇到的疑惑。原创 2024-02-27 16:12:31 · 296 阅读 · 0 评论 -
内核虚拟化:MMIO模拟
MMIO是通过设置spte的保留位来标志的。虚拟机内部第一次访问MMIO的gpa时,发生了EPT_VIOLATION然后check gpa发现对应的pfn不存在(QEMU没有注册),那么认为这是个MMIO,于是set_mmio_spte来标志它的spte是一个MMIO。原创 2024-02-26 17:01:16 · 861 阅读 · 1 评论 -
内核虚拟化:LoongArch KVM
LoongArch KVM虚拟化整体运行流程如图所示首先用户态OEMU创建KVM虚拟机并初始化运行环境,然后进入内核态KVM,让CPU在虚拟化模式下运行虚拟机程序。当vCPU触发异常时会退出到内核态KVM来处理异常如果KVM能够处理则重新进入虚拟化模式运行,否贝I再退出到用户态处理,处理完成后返回KVM再进入虚拟机。LoongArch CPU拥有host模式和guest模式,并且两种模式下有内核态和用户态,在guest模式下切换内核态时并不会退出到host模式下。内存虚拟化采用两级MMU。原创 2024-02-29 14:49:03 · 515 阅读 · 1 评论 -
内核虚拟化:内存虚拟化
最近在阅读《深度探索Linux系统虚拟化:原理与实现》这本书来学习虚拟化方面的知识,通过读书笔记的方式记录学习过程中的重要知识点。这篇文章主要是关于内存虚拟化方面的介绍。原创 2024-02-27 14:53:39 · 1072 阅读 · 0 评论 -
内核虚拟化:实时迁移QEMU-KVM虚拟机
实时迁移有许多用途:在服务器群中平衡负载、关闭一些主机进行硬件或软件维护而保持客户机运行、节能:如果群集中的一些主机负载较轻,并且可以处理更多的虚拟机,而不会影响服务,则将虚拟机迁移到负载较轻的服务器并关闭未使用的服务器。随着 KVM 的成熟和越来越多的客户将其用于处理 KVM 虚拟化程序上的企业负载,我们看到了更大的虚拟机:分配更多内存,并向虚拟机暴露了更多 vCPU。在我们的第2阶段代码中,我们检查每次迭代中客户端生成的脏页面数量以及传输页面所需的时间,这给我们提供了网络带宽的估计。翻译 2024-02-19 19:31:07 · 281 阅读 · 1 评论 -
内核虚拟化: VCPU requests
通过翻译内核文档和源码学习vcpu requests,kernel v6.2原创 2024-01-24 05:12:52 · 859 阅读 · 1 评论 -
内核虚拟化:hypercall
在Linux中,大家应该对syscall非常的了解和熟悉,其是用户态进入内核态的一种途径或者说是一种方式,完成了两个模式之间的切换;而在虚拟环境中,有没有一种类似于syscall这种方式,能够从no root模式切换到root模式呢?答案是肯定的,KVM提供了Hypercall机制,x86体系架构也有相关的指令支持。原创 2024-01-09 21:00:23 · 932 阅读 · 0 评论 -
内核虚拟化:CPU虚拟化硬件支持
Intel VT中的VT-x技术扩展了传统的IA32处理器架构,为IA32架构的处理器虚拟化提供了硬件支持。原创 2024-01-17 01:32:09 · 901 阅读 · 0 评论 -
内核虚拟化:vCPU之暂停轮询系统
Linux内核:v6.2KVM 暂停轮询系统是 KVM 内的一项功能,其在某些情况下可以通过在vCPU 放弃运行并让出后,在主机中进行一段时间的轮询来降低虚拟机的延迟。简而言之,当vCPU 放弃运行(即执行 cede 操作)或在 PowerPC 中,当一个虚拟核心(vcore)的所有vCPU 都放弃运行时,主机内核会在将 CPU 让给调度程序之前,通过轮询等待唤醒条件。轮询在某些情况下提供了延迟优势,尤其是在虚拟机可以非常快速地再次运行的情况下。原创 2024-01-02 15:44:13 · 899 阅读 · 0 评论 -
内核虚拟化:shadow mmu(x86)
在 x86 架构的虚拟化环境中,位于 arch/x86/kvm 目录下的 mmu.c 和 mmu.h 文件以及 paging_tmpl.h 文件负责向客户机提供标准的 x86 内存管理单元,并在将客户机的物理地址转换为主机物理地址时执行操作- 客户机不应能够确定它是在模拟的 mmu 上运行,除了在时间上(我们试图遵守规范,而不是模拟特定实现的特征,如 TLB 大小)。- 客户机不得能够访问未分配给它的主机内存。- 最小化 mmu 引入的性能惩罚。- 需要适应大内存和大 VCPU 客户机。翻译 2024-01-01 19:49:28 · 816 阅读 · 0 评论