(四)系统虚拟化关键技术

一、系统虚拟化的主要作用

1.      隔离:工作负载,之前单个系统跑两个app,做好隔离,可以分两个虚拟机

2.      合并:之前两台物理机运行两个app,现在一台物理机运行两个app

3.      迁移:之前在一台物理机不能满足要求,现在迁移到另一台物理机。

4.      个性化:做嵌入,对不同app做不同配置,因为app的性能要求有各自的特点

二、cpu虚拟化

1.      本质:为每个虚拟机提供一个或多个虚拟CPU(VCPU),多个VCPU 复用物理CPUs, 任何时刻一个物理CPU只能被一个VCPU使用

2.      必须解决的问题:

(1)虚拟CPU的正确运行:调虚拟cpu要看起来和物理cpu一样。保证虚拟机的指令正确执行,各虚拟机之间不互相影响。现有实现技术:模拟执行和监控执行

(2)虚拟CPU的调度:虚拟cpu依赖物理cpu。由VMM决定当前哪一个VCPU实际在物理CPU上运行。保证VCPU的性能,调度的公平性

3. 模拟执行:是指由VMM模拟所有指令的执行效果,包括解释执行和二进制代码翻译执行。效率较低。

监控执行:是指虚拟机的绝大多数指令都在物理主机上直接执行,少量可能影响虚拟机运行或影响其虚拟机状态的指令(敏感指令)必须由VMM监控并模拟其执行效果。执行效率较高。取决于模拟执行指令数量、复杂度和算法性能

4.Xen基于额度调度算法——公平调度算法

该算法有两个参数其中一个参数cap是指示占用多少个cpu。另一个参数是weight指示一个是cpu占多少时间。初始化时:weight=credit若cap=100则 vcpu占一个物理cpu,cap=200vcpu占两个物理cpu,在算法中有三个队列:OVER(已获得),UNDER(等待),BOOST(某些虚拟机让出了cpu,下次调度放进boost,在调度时优先调度),每10毫秒运行一次后credit=credit-100+30/n,3次之后额度用完,让出cpu,保证每个vcpu运行时间,保证相对公平。

该算法曾经出现过bug:某cpu阻塞挂起,加入boost队列,下个周期优先调度,周期加长,但是可以利用,在每次结束时,主动挂起,则可以无限期使用cpu可占80-90%的时间。

4 .Intel VT-x操作模式cpu硬件虚拟化

VMX root 模式:拥有全部权限,用于VMM的运行

VMX non-root 模式:只拥有部分权限,用于运行客户机软件,GUEST OS依靠环级的设置来减少客户及软件的权限,通过环重命名和压缩来完成

三、内存虚拟化

5. 机器地址: 真实硬件的机器地址(HPA,host physical address)

物理地址:经过VMM抽象的虚拟机所见伪物理地址(GPA,guestphysical address)

虚拟地址:Guest OS提供给应用程序使用的线性地址(GVA,guest virtual address)

操作系统帮助进程执行g , vm帮os 执行 f

6.页表虚拟化

操作系统通过配置多级页表建立虚拟地址到物理地址的映射关系,并将页表的指针载入处理器的内存管理单元MMU,由硬件在必要时通过查询页表,以完成虚拟地址到物理地址的映射。

7.气球驱动

气球驱动最早来源于VMware ESXServer系统。当系统内存被过量使用或有多余时,通过客户机上的气球驱动实现内存页面的回收和再分配。

每个Domain在建立之初,Xen根据其配置文件中的定义为Domain分配固定数量的物理内存。但是,1)由于Guest OS运行的应用程序过多会导致其内存严重不足;2)由于Guest OS工作量不大而使得内存被闲置。Xen实现了气球驱动来调节各Domain之间的物理内存分布。

 当Xen/VMM需要回收内存时,给ballon充气,即:让客户机中的气球驱动向Guest OS申请内存空间(气球膨胀),ballon再把分配到的物理内存给VMM,从而使得Guest OS使用的内存空间减少。

 当Guest OS需要更多内存空间时,客户机中的气球驱动可以向Guest OS释放内存空间(气球缩小),从而使得Guest OS实际使用的内存空间增大。

8内存共享---内存页面的写时复制机制

被共享的页面对于所有虚拟机都是只读的,当某一个虚拟机需要对其进行修改时,需要先复制出一份页面,然后在复制出的页面上进行修改。

为了减少扫描相同页面的开销,VMware采取先对页面计算的Hash值做比较,如果二者Hash值相同再对页面内容进行比较。

内存可写工作集(writableworking sets) 的使用

应用于虚拟机迁移和克隆等场景。

在虚拟机运行过程中,有一大部分内存很少或从来不被修改,那些频繁被修改的内存即为内存可写工作集。

虚拟机内存管理中,如何获取内存可写工作集呢?如:将虚拟机中所有内存页面设置为只读,虚拟机所有对内存的写操作都会引起一个页面失效,页面失效处理程序中把对该页面的写操作通过位图等方法记录下来。

硬件辅助内存虚拟化

 Intel 虚拟处理器标识(VPIDs), 防止每次VM exit和VM entry导致的TLB清空。

 Intel 扩展页表EPT,将物理地址转换为机器地址,避免了页面失效带来的VM exit开销。

四、IO虚拟化

CPU的能力提升虽然可以更快地处理数据,但是其前提是:数据能够顺畅的到达CPU。因此,I/O的能力提升是一个重要的部分。由于I/O设备具有异构性强、内部状态不易控制等特点,I/O设备的虚拟化一直是虚拟化技术的难点所在。

1.模拟I/O设备

VMM 对虚拟机摸拟一个I/O设备,通过完全模拟设备的功能,虚拟机可以使用对应真实的驱动程序,这个方式可以提供完美的兼容性,但是显然这种模拟会影响到性能。

2. 额外软件接口

VMM软件将提供一系列直通的设备接口给虚拟机,这个方式可以提升虚拟化的性能,但兼容性有所降低。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康雨城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值