
Linux
文章平均质量分 92
小写的毛毛
这个作者很懒,什么都没留下…
展开
-
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 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 评论 -
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 评论 -
利用/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 · 3039 阅读 · 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 · 9932 阅读 · 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 · 668 阅读 · 0 评论