(四)系统虚拟化关键技术
2017-10-10 23:48
323 查看
一、系统虚拟化的主要作用
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软件将提供一系列直通的设备接口给虚拟机,这个方式可以提升虚拟化的性能,但兼容性有所降低。
相关文章推荐
- 大数据流式计算:关键技术及系统实例
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
- Linux 中的 XEN 虚拟化技术(四)管理 Xen 虚拟系统
- 城市生态规划关键技术方法之五:生态支持系统瓶颈分析方法
- OFDM系统的关键技术及分析
- 江翰网页防篡改系统解决方案--2关键技术
- 负载均衡--大型在线系统实现的关键(上篇)(再谈QQ游戏百万人在线的技术实现)
- 有关汉字系统的关键技术/纯汇编显示中文/汉字显示/Nasm源码
- IBM虚拟化专家何乐——服务器虚拟化的关键技术:虚拟器件的创建,部署和管理
- 解决在VMware中安装64位系统时“此主机具有虚拟化支持能力的,但虚拟化技术被禁用”的方法
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
- 解决在VMware中安装64位系统时“此主机具有虚拟化支持能力的,但虚拟化技术被禁用”的方法
- 未来网络虚拟化关键技术研究
- 神经形态计算技术有望成为智能无人系统的关键
- 解决在VMware中安装64位系统时“此主机具有虚拟化支持能力的,但虚拟化技术被禁用”的方法
- 新型大规模先进计算系统关键技术
- MIMO-OFDM系统原理及其关键技术
- 异地容灾系统和数据仓库中数据同步的设计及其关键技术实现
- 【视频课程】Android底层开发关键技术—Android系统移植与HAL框架开发
- IBM:推动虚拟化技术进步是Unix发展的关键因素