
虚拟化
文章平均质量分 91
小写的毛毛
这个作者很懒,什么都没留下…
展开
-
PV qspinlock原理
1 前言自旋锁(spinlock)是用来在多处理器环境中工作的一种锁。如果内核控制路径发现spinlock是unlock,就获取锁并继续执行;相反,如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径lock,就在周围“旋转”,反复执行一条紧凑的循环指令,直到锁被释放。spinlock的循环指令表示“忙等”:即使等待的内核控制路径无事可做(除了浪费时间),它也在CPU上保持运行。spinlock的实现依赖这样一个假设:锁的持有线程和等待线程都不能被抢占。但是在虚拟化场景下,vCPU可能在任意时刻原创 2021-06-25 17:25:22 · 3111 阅读 · 1 评论 -
LUKS磁盘格式
1 介绍LUKS是"Linux Unified Key Setup"的简写。LUKS最初是为了解决用户在从更改用户空间和忘记命令行参数中导出加密设置时的问题。目前qemu的磁盘加密格式是luks格式。LUKS磁盘格式如下: LUKS phdr KM1 KM2 ... KM8 bulk data LUKS phdr: LUKS partition header。包含了使用的原创 2021-06-01 19:16:28 · 3944 阅读 · 0 评论 -
openEuler qemu CPU热插
openEuler社区的qemu-4.1.0实现了CPU热插特性。CPU热插功能涉及的修改主要包括ACPI(MADT表,DSDT表),GED,GICv3,以及热插流程的支持。1 ACPI1.1 什么是ACPI?ACPI是Advanced Configuration and Power Interface的简写。可以将ACPI理解为与体系结构无关的电源管理和配置框架,该框架在主机OS内形成子系统。 该框架建立了一个硬件寄存器集来定义电源状态(睡眠,休眠,唤醒等)。 硬件寄存器集可以容纳专用硬件原创 2021-05-25 15:01:29 · 3961 阅读 · 0 评论 -
openEuler 20.09 PV-sched
openEuler 20.09的关键特性中提到的虚拟化增强包括了以下内容:通过双层调度和Hypervisor感知VM调度,优化VM锁抢占,提升多核超分场景性能分析了openEuler 20.09内核代码,其中有5个commit和PV sched相关,PV指的是paravirt。这5个commit实际是向guest提供了一组hypercall接口,通过这一组hypercall接口,guest可以感知vCPU是否被抢占并调度vCPU运行。commit 说明 cec359f078e原创 2021-05-25 11:25:18 · 2631 阅读 · 0 评论 -
Avocado使用
Avocado用户手册:https://avocado-framework.readthedocs.io/en/latest/guides/user/index.html1.安装Avocadopip3 install avocado-framework2.安装Avocado-VTpip3 install git+https://gitee.com/openeuler/avocado-vt3.引导Avocado-VT(在线下载方式)1.安装python3-develyum原创 2021-03-29 11:05:50 · 1835 阅读 · 0 评论 -
qemu monitor和qemu agent的实现
虚拟机配置中: <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel>With qemu, ifnameis "org.qemu.guest_agent.0", t...原创 2021-01-14 10:49:33 · 1483 阅读 · 0 评论 -
AMD SEV编程手册
AMD64 Architecture Programmer's Manual Volume 2: System Programming15.34 Secure Encrypted Virtualization15.34.1 Determining Support for SEV通过CPUID 8000_001F[EAX] 可以查询是否支持SEV。第一个Bit指示了是否支持SEV。SEV可用时,CPUID 8000_001F[EBX] 和 8000_001F[ECX] 可以提供附加的信息,比如同时原创 2021-01-06 10:06:24 · 1804 阅读 · 1 评论 -
AMD SEV实现
libvirt SEV相关代码分析struct _virDomainObj {...virDomainDefPtr def; /* The current definition */...}struct _virDomainDef {...virDomainSEVDefPtr sev;...}struct _virDomainSEVDef { int sectype; /* enum virDomainLaunchSecurity */ char ...原创 2021-01-06 10:02:15 · 1672 阅读 · 1 评论 -
AMD SEV使用
qemu中有对SEV的部分介绍:qemu-5.0/docs/amd-memory-encryption.txtLibvirt对SEV的配置libvirt官方文档如下:https://libvirt.org/formatdomaincaps.html#elementsSEVhttps://libvirt.org/kbase/launch_security_sev.htmlhttps://libvirt.org/formatdomain.html#sev宿主机支持SEV检查在libv原创 2020-12-31 11:27:03 · 2406 阅读 · 0 评论 -
AMD SEV介绍
AMD EPYC(霄龙)处理器引入了两个硬件安全组件:AES-128硬件加密引擎:嵌入在内存控制器内,用于对内存数据进行加解密。 AMD Secure Processor(AMD-SP):负责安全密钥的生成和管理。Secure Memory Encryption (SME):AMD在DRAM的控制器中添加了加解密模块,用来控制内内存数据的加密和解密。Secure Encrypted Virtualization (SEV) :将主内存加密功能与现有的AMD-V虚拟化体系结构来支持加密的虚拟机。原创 2020-12-29 17:06:03 · 9931 阅读 · 3 评论 -
qemu savevm流程
hmp_savevm->save_snapshot->if (migration_is_blocked())判断是否不能迁移,有些设备不支持迁移或者全局链表migration_blockers里面有内容,则直接返回 ->if (!replay_can_snapshot())也直接返回 ->if (!bdrv_all_can_snapshot())也直接返回 ...原创 2020-10-12 15:22:09 · 852 阅读 · 0 评论 -
libvirt-6.3快照流程
virsh snapshot-create-as的入口函数是cmdSnapshotCreateAs,cmdSnapshotCreateAs会将命令行参数组成buffer(内容是xml格式)然后调用virshSnapshotCreate。virshSnapshotCreate->virDomainSnapshotCreateXML->qemuDomainSnapshotCreateXML。qemuDomainSnapshotCreateXML->...->virDomainSnap原创 2020-10-12 15:10:54 · 505 阅读 · 0 评论 -
qemu-5.0迁移流程简述
1. SetupStart guest on destination, connect, enable dirty page logging and more2. Transfer MemoryGuest continues to runBandwidth limitation (controlled by the user)First transfer the whole memoryIteratively transfer all dirty pages (pages that were w原创 2020-10-12 15:02:45 · 354 阅读 · 0 评论 -
QEMU深入浅出: 整体架构及线程模型
本文转自https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/20161222?lang=en本文面向开发者,尝试在QEMU的工作机制方面做知识的分享,以期对新人贡献者们于学习QEMU代码方面有所裨益。运行一个客户机时需要处理很多工作,包括执行客户机指令、处...转载 2019-08-16 11:26:59 · 2526 阅读 · 0 评论 -
QCOW2镜像格式
原 文:https://people.gnome.org/~markmc/qcow-image-format.htmlQCOW2镜像格式是Qemu支持的磁盘镜像格式之一。它可以使用一个文件来表示一个固定大小的块设备。与Raw镜像格式相比,QCOW2具有如下优点:更小的文件大小,即便不支持holes(稀疏文件)的文件系统同样适用 支持写时拷贝(COW, Copy-on-write),...转载 2019-08-16 14:57:10 · 24378 阅读 · 0 评论 -
VFIO Introduction
1.What is VFIO? VFIO是一个可以安全的把设备I/O、中断、DMA等暴露到用户空间(userspace),从而可以在用户空间完成设备驱动的框架。 得益于vfio低开销的用户空间直接设备访问,虚拟机设备分配(device assignment)、高性能应用等可以获得更高的I/O性能。 2.IOMMU实现用户空间设备驱动,最困难的在于如何将DMA以安全...转载 2019-08-16 15:12:19 · 3681 阅读 · 0 评论