- 博客(22)
- 收藏
- 关注
原创 PV qspinlock原理
1 前言自旋锁(spinlock)是用来在多处理器环境中工作的一种锁。如果内核控制路径发现spinlock是unlock,就获取锁并继续执行;相反,如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径lock,就在周围“旋转”,反复执行一条紧凑的循环指令,直到锁被释放。spinlock的循环指令表示“忙等”:即使等待的内核控制路径无事可做(除了浪费时间),它也在CPU上保持运行。spinlock的实现依赖这样一个假设:锁的持有线程和等待线程都不能被抢占。但是在虚拟化场景下,vCPU可能在任意时刻
2021-06-25 17:25:22
2750
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
3775
原创 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
3703
原创 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
2543
原创 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
1669
原创 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
1409
原创 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
1602
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
1542
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
2097
原创 利用/proc/pid/pagemap跟踪进程物理页迁移
linux-3.10/Documentation/vm/pagemap.txt:pagemap, from the userspace perspective---------------------------------------pagemap is a new (as of 2.6.25) set of interfaces in the kernel that allowuserspace programs to examine the page tables and related
2020-12-30 09:55:21
2875
原创 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
8793
3
原创 LiME(Linux Memory Extractor)工具在aarch64服务器运行出错问题
问题在aarch64服务器(内核版本为4.14.0-115.el7a.0.1.aarch64)上运行LiME(Linux Memory Extractor)工具会导致内核挂掉。LiME工具地址:https://github.com/504ensicsLabs/LiME测试分析步骤搭建一台aarch64虚拟机用来测试LiME,使用命令行insmod lime.ko path=xxx format=raw dio=1(编译LiME工具使用make debug)运行的同时,使用cat /proc/
2020-12-18 14:23:20
596
原创 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
764
原创 libvirt-6.3快照流程
virsh snapshot-create-as的入口函数是cmdSnapshotCreateAs,cmdSnapshotCreateAs会将命令行参数组成buffer(内容是xml格式)然后调用virshSnapshotCreate。virshSnapshotCreate->virDomainSnapshotCreateXML->qemuDomainSnapshotCreateXML。qemuDomainSnapshotCreateXML->...->virDomainSnap
2020-10-12 15:10:54
442
原创 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
292
转载 systemd启动流程
参考:https://www.freedesktop.org/software/systemd/man/bootup.html#1 系统启动流程local-fs-pre.target | v(various mounts and (various swap (various cryptsetup fsck services...) ...
2019-12-13 15:19:53
455
原创 rk3288 linux OTA A/B升级分析
最近在做rk3288 linux的OTA A/B升级方案,因此研究了一下rk3288自带的OTA升级流程,将其记录下来。1.概述1.1 什么是OTA升级?OTA是Over-the-Air的简称,OTA升级可以理解为用户正常使用过程中进行升级,OTA 升级旨在升级基础操作系统、系统分区上安装的只读应用和/或时区规则。1.2 什么是OTA A/B升级?A/B 系统升级(也称为无缝更...
2019-11-14 17:52:19
5210
2
原创 arm rootfs定制
最近在做rk3288的OS定制,因此将过程中遇到的问题记录下来。本文主要记录ubuntu 18.04 rootfs制作过程。参考文档:http://opensource.rock-chips.com/wiki_Distribution1.准备步骤获取ubuntu base 18.04.3,路径:http://cdimage.ubuntu.com/ubuntu-base/releases...
2019-10-29 19:25:45
410
原创 Ubuntu ISO定制
最近在进行Ubuntu ISO的定制,将其过程进行简单的记录。1.Ubuntu发行版本的选择Kubuntu::使用的是KDE桌面环境 Lubuntu:最新的版本使用的是LXQT桌面环境,之前的版本使用的是LXDE桌面环境 Ubuntu Budgie:使用的是Budgie桌面环境 Ubuntu Kylin:是麒麟的版本 Ubuntu MATE:使用的是MATE桌面环境 Ubuntu...
2019-10-24 15:08:45
2208
转载 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
3583
转载 QCOW2镜像格式
原 文:https://people.gnome.org/~markmc/qcow-image-format.htmlQCOW2镜像格式是Qemu支持的磁盘镜像格式之一。它可以使用一个文件来表示一个固定大小的块设备。与Raw镜像格式相比,QCOW2具有如下优点:更小的文件大小,即便不支持holes(稀疏文件)的文件系统同样适用 支持写时拷贝(COW, Copy-on-write),...
2019-08-16 14:57:10
24133
转载 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
2282
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人