自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux系统编程:内存分配

参考书籍《Linux/UNIX系统编程手册》示例程序源码:https://github.com/nanshuaibo/tlpi/tree/main进程可以通过增加堆的大小来分配内存,所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和释放而增减如下图。

2024-04-26 16:46:13 631 2

原创 QEMU Monitor及热迁移配置

QEMU monitor的使用及热迁移信息获取

2024-04-22 21:34:31 701

原创 KVM Forum 2023:使用eBPF处理复杂的VM Exit

背景与动机:在KVM中处理I/O操作(尤其是MMIO)时存在性能瓶颈。传统的vhost模型虽然可以加速virtio设备,但对于其他设备,它需要在宿主内核中运行大量特定设备的代码,难以在运行时更新,且不能被沙箱化。eBPF介绍:eBPF是一个强大的内核编程工具,允许开发者在内核中运行经过安全检查的沙盒程序。eBPF的优点包括内核级的沙箱环境、可在运行时上传程序、灵活的ABI,以及目前的流行度。eBPF的应用:文档提出使用eBPF来处理KVM客户机的MMIO退出,以克服现有方法的限制。

2024-03-16 22:02:48 442 1

原创 内核虚拟化:虚拟中断注入

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 399 1

原创 中国内核开发者大会:云平台热迁移技术优化与实践

中国内核开发者大会云和服务器分论坛回放:https://live.csdn.net/room/Hansen666666/OzVSYgu0

2024-03-05 21:49:09 661

原创 中断虚拟化之APIC虚拟化

最近在阅读《深度探索Linux系统虚拟化:原理与实现》这本书来学习虚拟化方面的知识,通过读书笔记的方式记录学习过程中的重要知识点。

2024-03-04 20:22:40 820 1

原创 云计算:openstack学习笔记和环境部署

OpenStack是一个自由、开源的云计算平台。它主要作为基础设施即服务(IaaS)部署在公用云和私有云中,提供虚拟服务器和其他资源给用户使用。该软件平台由相互关联的组件组成,控制着整个数据中心内不同的厂商的计算、存储和网络资源的硬件池。用户可以通过基于网络的仪表盘或者命令行工具管理。应用场景:OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。

2024-03-02 16:44:50 1208

原创 内核虚拟化: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 564 1

原创 内核虚拟化:vm exit和userspace exit

记录一次在阅读kvm内核源码时遇到的疑惑。

2024-02-27 16:12:31 322

原创 内核虚拟化:内存虚拟化

最近在阅读《深度探索Linux系统虚拟化:原理与实现》这本书来学习虚拟化方面的知识,通过读书笔记的方式记录学习过程中的重要知识点。这篇文章主要是关于内存虚拟化方面的介绍。

2024-02-27 14:53:39 1153

原创 内核虚拟化:MMIO模拟

MMIO是通过设置spte的保留位来标志的。虚拟机内部第一次访问MMIO的gpa时,发生了EPT_VIOLATION然后check gpa发现对应的pfn不存在(QEMU没有注册),那么认为这是个MMIO,于是set_mmio_spte来标志它的spte是一个MMIO。

2024-02-26 17:01:16 893 1

翻译 内核虚拟化:实时迁移QEMU-KVM虚拟机

实时迁移有许多用途:在服务器群中平衡负载、关闭一些主机进行硬件或软件维护而保持客户机运行、节能:如果群集中的一些主机负载较轻,并且可以处理更多的虚拟机,而不会影响服务,则将虚拟机迁移到负载较轻的服务器并关闭未使用的服务器。随着 KVM 的成熟和越来越多的客户将其用于处理 KVM 虚拟化程序上的企业负载,我们看到了更大的虚拟机:分配更多内存,并向虚拟机暴露了更多 vCPU。在我们的第2阶段代码中,我们检查每次迭代中客户端生成的脏页面数量以及传输页面所需的时间,这给我们提供了网络带宽的估计。

2024-02-19 19:31:07 355 1

原创 内核虚拟化: VCPU requests

通过翻译内核文档和源码学习vcpu requests,kernel v6.2

2024-01-24 05:12:52 882 1

原创 内核虚拟化:CPU虚拟化硬件支持

Intel VT中的VT-x技术扩展了传统的IA32处理器架构,为IA32架构的处理器虚拟化提供了硬件支持。

2024-01-17 01:32:09 1010

原创 内核虚拟化:hypercall

在Linux中,大家应该对syscall非常的了解和熟悉,其是用户态进入内核态的一种途径或者说是一种方式,完成了两个模式之间的切换;而在虚拟环境中,有没有一种类似于syscall这种方式,能够从no root模式切换到root模式呢?答案是肯定的,KVM提供了Hypercall机制,x86体系架构也有相关的指令支持。

2024-01-09 21:00:23 985

原创 内核虚拟化:vCPU之暂停轮询系统

Linux内核:v6.2KVM 暂停轮询系统是 KVM 内的一项功能,其在某些情况下可以通过在vCPU 放弃运行并让出后,在主机中进行一段时间的轮询来降低虚拟机的延迟。简而言之,当vCPU 放弃运行(即执行 cede 操作)或在 PowerPC 中,当一个虚拟核心(vcore)的所有vCPU 都放弃运行时,主机内核会在将 CPU 让给调度程序之前,通过轮询等待唤醒条件。轮询在某些情况下提供了延迟优势,尤其是在虚拟机可以非常快速地再次运行的情况下。

2024-01-02 15:44:13 928

翻译 内核虚拟化: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 834

原创 openharmony中运行libbpf程序

环境:hdc 1.2.0a。

2023-09-09 15:57:15 209 1

read,open,write系统调用C语言内嵌汇编

read,open,write系统调用C语言内嵌汇编

2022-07-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除