文章分类 - 虚拟化
摘要:一、说明: 特别说明,本文是基于Qemu2.0的代码分析,已经在私有云中的使用实践 二、基本概念: 扇区:扇区也称作为sector,磁盘驱动器从磁盘中读取写入数据的时候都是以sector为单位,一个扇区是512字节(所以如果你在用户态写1个字节,驱动会怎么样呢?)。 簇:簇也称为cluster。一个
阅读全文
摘要:25.1.1 Relative Priority of Faults and VM Exits For example, execution of RDMSR with CPL = 3 generates a general-protection exception and not a VM exi
阅读全文
摘要:像gettimeofday() and clock_gettime这种系统调用,它可能会比一般其他的其他系统调用更快,因为它本身是获取时间的,如果它本身耗时的话,那就不精确了,他们的精度是ns级别的。 tsc指令并不要求在特权级别下执行,所以完全可以在用户态执行rdtsc指令。 Variant TS
阅读全文
摘要:简介: windows提供了QueryPerformanceCounter (QPC)接口来获取高精度的时间戳或者是测量时间间隔。QPC不依赖于外部的时钟源,也不与外部的时钟源进行同步。时间戳和时间间隔经常用于性能度量、延迟度量,这些测量都不依赖于外部的事件参考(应该指的是不依赖于NTP这些,这与t
阅读全文
摘要:机制: 因为虚拟机并不感知自己运行在虚拟的硬件中,所以它还是按照普通的规则执行。当任务切换的时候,进程的页表基址被加在到CR3寄存器中。 当CPU访问内存的时候,其地址被MMU截获,并被翻译为guest物理地址。 但是并没有完,它还需要结果ept页表才能翻译为真实的物理地址。 普通的页表是保存在进程
阅读全文
摘要:问题现象: 虚拟机在启动的过程中报错,启动失败。日志中提示如下: KVM internal error.Suberror:3 extra data[0]:800000ef extra data[1]:31 寄存器值 分析:我觉得这个问题应该从“寄存器值RIP分析”。 这些寄存器的值是完全准确的虚拟机
阅读全文
摘要:幽灵漏洞变种 1. Indirect Branch Restricted Speculation (ibrs) 当CPUID中存在SPEC_CTRL特性的时候,可以通过"noibrs"/ibrs_enabled来控制IBRS特性。是否支持这个特性可以通过SPEC_CTRL MSR来获取(为什么不使用
阅读全文
摘要:命令行格式:virsh qemu-agent-command domain_name '{"execute":"guest-run-command","arguments":{"command":"ls -al"}}' 接口:virDomainQemuAgentCommand,cmd参数{\"exe
阅读全文
摘要:在qcow2_check_refcounts函数中, step 1: 先调用calculate_refcounts创建一个refcount表,这个refcount表示根据l2表中每一个entry的值计算出来,并保存在内存中的表(打印的时候交reference)。 step 2: 调用compare_
阅读全文
摘要:Monitor的作用 QEMU Monitor Protocol (QMP) 是允许应用程序使用json格式与qemu进行通信的协议. Libvirt中的Qemu Monitor是Libvirt与Qemu通信的一种机制. 比如暂停虚拟机,恢复虚拟机,创建快照等. 主要的代码在qemu_monitor
阅读全文
摘要:一、影子页表 1. 为什么会有影子页表? 我们给虚拟机分配内存的时候肯定是非连续的内存,但是qemu给虚拟机内部呈现的必须是连续的内存。能否通过一次转换来完成从虚拟机内部进程的虚拟地址到真实的物理地址的转换呢? 初略的想这是做不到的,因为虚拟机操作系统内核的页表机制已经写死了,它转换出来的肯定是虚拟
阅读全文
摘要:xml中加上如下配置: qemu命令行中有如下内容:
阅读全文
摘要:git add xxx.c git commit -s 然后填好标题注释吧 git format-patch --stdout -1 > patch ./script/checkpatch.pl patch 然后把patch的内容黏贴到邮件中就可以了。 需要抄送的人可以使用./scripts/get
阅读全文
摘要:Virtio概念 virtio 是 KVM 虚拟环境下针对 I/O 虚拟化的最主要的一个通用框架。它通常分为后端和前端。前端是指跑在虚拟机里面的virtio驱动,后端是指Qemu中的设备模拟。 设计Virtio的目的主要考虑到它的高性能与可扩展性。Virtio模拟的是一种现实中不存在的设备,所以在它
阅读全文
摘要:一、jiffies 它给内核提供节拍,内核中使用jiffies来管理。比如调度、性能统计等,都是以jiffies为单位来实现的。 这些调度和内核活动不能考硬件定时器来管理,否则定时器得忙死。 jiffies本身是定时器实现的,其他的内核获取时间或是其他的度量读取它就行,这就省了很多事。 因为以前它是
阅读全文
摘要:基本流程: 首先在libvirt中会去打开一个tap设备(virNetDevTapCreate),然后记录其fd。在添加网卡的时候会传入如下的两个设备给qemu:-netdev tap,fd=43,id=hostnet0,vhost=on,vhostfd=44 -device virtio-net-
阅读全文
摘要:O_DIRECT (since Linux 2.4.10) Try to minimize cache effects of the I/O to and from this file. In general this will degrade performance, but it is useful in ...
阅读全文
摘要:同步IO的本质 如果使用同步IO的话,那么CPU经常会处于idle状态等待磁盘读写数据完成,因为只有他们完成程序才能继续往下执行。 这时候的CPU资源可以被系统调度,但是用户的应用程序却无法继续往下执行,它必须等待IO完成! 所以同步IO对于应用来说是不好的,因为应用因为串行而阻塞住了,但应用还有很
阅读全文
摘要:Qemu IO模型简述: block: New BlockBackend A block device consists of a frontend device model and a backend. A block backend has a tree of block drivers doi
阅读全文

浙公网安备 33010602011771号