(四)系统虚拟化关键技术
一、系统虚拟化的主要作用
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软件将提供一系列直通的设备接口给虚拟机,这个方式可以提升虚拟化的性能,但兼容性有所降低。
(四)系统虚拟化关键技术相关推荐
- 服务器虚拟化技术实现,服务器虚拟化关键技术及其系统实现
<服务器虚拟化关键技术及其系统实现>由会员分享,可在线阅读,更多相关<服务器虚拟化关键技术及其系统实现(9页珍藏版)>请在人人文库网上搜索. 1.服务器虚拟化关键技术及其系统实 ...
- 虚拟化关键技术及解决方案
试题二 虚拟化关键技术及解决方案 虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好 ...
- 北航教授李帅:“VR+医疗”仿真系统及关键技术分享
"走进高校" CARA 第二期学术讲堂:智能几何计算篇,直播已圆满结束.错过直播的小伙伴,福利来了,CV君已将回放视频整理完毕,欢迎收看! 第二 part,是李帅老师的学术分享,主 ...
- 分布式视频会议系统的关键技术及实现
引言 在目前已成为计算机领域热点的群组协作计算工具中,视频会议系统是其中的一个重要组成部分.电路交换网络中的视频会议系统已有较成熟的模型,如ITU的H.320标准等,但分组交换网(包括Ethernet ...
- 超详细!百度富媒体检索比对系统的关键技术
导读:百度富媒体检索比对系统是一套基于 Ann(approximate nearest neighbor)检索和内容特征比对技术,旨在提供针对图像.音频.视频等多媒体资源的相似检索系统.包括离线训练. ...
- 计算机安全监控系统,关于计算机安全监控系统的关键技术
1 计算机安全监控对象 计算机安全监控对象总的来讲包括信息和操作两类,其中信息主要指系统中文本.文件信息,操作主要是用户进行的操作行为.计算机监控系统的工作是对文本.文件的复制.变更以及用户操纵进行监 ...
- 地面无人系统人机交互关键技术
地面无人系统的遥操作系统已进入模块化.通用化研制阶段,融入语音控制.手势控制.头盔显示器等操控手段,向着自主.通用.智能化.VR/AR遥操作.非视距实时操控方向发展. 人机交互遥操作整体由遥操作终端+ ...
- 【自动驾驶】自动驾驶感知系统与关键技术介绍
文章目录 1.自动驾驶感知系统介绍 1.1 什么是自动驾驶? 1.2 什么是自动驾驶系统? 1.3 自动驾驶技术概览(以环境感知系统为主) 1.4 自动驾驶行业现状 1.自动驾驶感知系统介绍 1.1 ...
- 浅议网上支付系统关键技术探究
[论文摘要:电子商务 网上支付系统 技术策略 [论文摘要我国电子商务和网上交易近年来取得了较大的发展 ,然而网上支付成为我国电子商务发展的瓶颈之一.因此 ,解决网上支付新问题是发展电子商务的必要环节. ...
最新文章
- 树莓派开发4-串口通讯wiringpi库
- 【QM-02】Master Data (QM主数据的设置)
- 要选择做有价值的事情
- HDFS restful API:关于WebHDFS与HttpFS的区别
- QT的QNetworkDiskCache类的使用
- Linux 下的 AddressSanitizer
- USTC 2011 homework list [现代软件工程 作业]
- kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接
- HTML元素(标签)大全及使用说明 (整)
- 这些话,是乔布斯给世间留下的真正伟大礼物
- JavaSE基础之JDK的下载和安装(四步开启Java编程的大门)
- eclipse的下载及安装教程
- 读npy、pck、nii格式数据集
- 软件开发工作量的估算方法
- 斯坦福大学-大数据与数据挖掘学习资料
- Idea设置ALT+/代码提示
- 两篇毕业论文致谢同一个女朋友?哈哈哈哈!
- 数字地、模拟地、信号地区分
- Bellhop-水平海底计算案例
- Python数据分析||基于逻辑回归的糖尿病视网膜病变的影响因素分析
热门文章
- python 如何用指数函数拟合数据?(2020年新型冠状病毒感染人数预测)
- 深入浅出python机器学习_9.1.5_通过数据预处理提高模型的准确率_MinMaxScaler
- Python 计算机视觉(一) —— 数字图像处理基础
- 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(CSS字体,文本)
- java 表单请求_java模拟表单请求
- python socket sendto sendall_网络通信 Python Socket UDP Select
- Spring中对于WebApplicationInitializer的理解
- maven+springMVC+Eclipse建立工程框架
- java二叉堆_为什么二叉堆利用数组存储?
- 怎么查看电脑内存和配置_电脑内存条如何选择?老司机带你如何选择电脑内存条...