1. 理论知识:内存虚拟化

应用程序获取到的内存空间即线性虚拟地址空间,而真正用于数据交互的是底层的物理地址空间。MMU(Memory Management Unit)内存管理单元,负责虚拟内存空间VA到真实物理内存MA的映射,这种映射关系的组合称为页表。

对于虚拟机来说,虚拟机中的应用程序申请的空间也是虚拟地址空间,然后映射成虚拟机中的物理地址空间GPA(Guest Physical Address),而虚拟机中运行的操作系统(即客户机操作系统Guest OS)相对于VMM(虚拟机通过程序VMM来创建)来说就是一个应用程序,因此要从GPA通过VMM映射成真实的物理地址MA。

1、 内存全虚拟化技术(也称影子页表虚拟化)

VMM为每个虚拟机维护一张影子页表,该页表维护了VA与MA的映射关系,而虚拟机维护VA到GPA的映射关系(即客户机页表)。

当VMM捕捉到客户机页表的修改后,会相应进行查找,找到与该GPA对应的MA,再将新的MA修改到真正在硬件中起作用的影子页表中,从而形成VA到MA的映射关系。

2. 内存半虚拟化技术

半虚拟化技术中,Guest OS中的创建的页表(客户机页表)自身不具备写权限,而是把写权限交给VMM来维护。当Guest OS需要更新页表映射关系,会把写请求交给VMM,VMM会通过查找它维护的影子页表,将写请求中的物理地址替换成真正的物理地址,最后再把修改过的映射关系(VA-MA)载入虚拟机的MMU中,这样虚拟机通过MMU中维护的页表对应关系就可直接访问到底层真实的硬件资源。

3. 内存硬件辅助虚拟化技术

该技术把影子页表中依靠软件实现的过程改为硬件实现,所以性能大大提升、
在内存硬件辅助虚拟化中,Guest OS完成VA到GPA的转换,再由硬件帮忙完成GPA到HPA(宿主机物理内存地址)的转换。第二次转换对于Guest OS来说是透明的,这种技术(GPA-MA)在Intel处理器中称为扩展页表Extended Page Tables(EPT),在AMD处理器中称为Neseted Page Tables(NPT)。

首先,VMM会把客户机物理地址GPA与机器MA地址的映射关系EPT页表设置到CPU中,这样以后客户机无论如何调整客户机页表(VA-GPA)都不再需要VMM的接入,因为CPU会自动查找客户机页表(VA-GPA)和扩展页表(GPA-MA)完成客户虚拟地址VA到机器地址MA的转换。

此外,Intel还引入了转换寻址缓冲区TLB(Translation Lookaside Buffer)技术,用来帮助缓存CPU中的MMU进行地址转换。有个问题,就是当发生VM entry和VM exit时都会强制CPU刷新TLB,导致全部TLB条目失效。因此提出了VPID。

虚拟处理器标识VPID(VirtualProcessor Identifiers)是在硬件上对TLB资源管理的优化,通过在硬件上为每个TLB项增加一个标识(tagged,即打标签),用于不同的虚拟处理器的地址空间,从而能够区分开不同虚拟处理器的TLB,避免了每次进行VM–Entry和VM-Exit时都让TLB全部失效,提高了VM切换的效率。

2. 在VMware中使虚拟机能够使用KVM


3. 查看服务器上CPU对ETP和VPID的支持情况

[root@rebekk ~]# grep -o 'ept vpid' /proc/cpuinfo
ept vpid# 加载kvm_intel模块
[root@rebekk ~]# modprobe kvm_intel
# 查看该模块信息
[root@rebekk ~]# modinfo kvm_intel
filename:       /lib/modules/3.10.0-957.el7.x86_64/kernel/arch/x86/kvm/kvm-intel.ko.xz
license:        GPL
author:         Qumranet
retpoline:      Y
rhelversion:    7.6
srcversion:     376D2B495997A14FEAD763F
alias:          x86cpu:vendor:*:family:*:model:*:feature:*0085*
depends:        kvm
intree:         Y
vermagic:       3.10.0-957.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        B7:0D:CF:0D:F2:D9:B7:F2:91:59:24:82:49:FD:6F:E8:7B:78:14:27
sig_hashalgo:   sha256
parm:           vpid:bool
parm:           flexpriority:bool
parm:           ept:bool
parm:           unrestricted_guest:bool
parm:           eptad:bool
parm:           emulate_invalid_guest_state:bool
parm:           vmm_exclusive:bool
parm:           fasteoi:bool
parm:           enable_apicv:bool
parm:           enable_shadow_vmcs:bool
parm:           nested:bool
parm:           pml:bool
parm:           preemption_timer:bool
parm:           ple_window:uint
parm:           ple_window_grow:uint
parm:           ple_window_shrink:uint
parm:           ple_window_max:uint# 检查对EPT和VPID的支持(可通过修改这两个值,来调整对EPT与VPID的支持情况)
[root@rebekk ~]# cat /sys/module/kvm_intel/parameters/ept
Y
[root@rebekk ~]# cat /sys/module/kvm_intel/parameters/vpid
Y

三种内存虚拟化技术(内存全虚拟化、内存半虚拟化、内存硬件辅助虚拟化),以及查看linux对ETP和VPID的支持情况相关推荐

  1. 硬件辅助虚拟化 之EPT(内存虚拟化)介绍

    这篇内容,通过从操作系统的虚拟地址介绍到虚拟机层面的内存虚拟化技术,并介绍这两种技术之间的关联. (以下实例都以intel 64位处理器和win10 x64操作系统位例. ) 一.虚拟地址 在保护模式 ...

  2. CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...

  3. 客户机操作系统已禁用cpu_CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...

  4. 软件模拟虚拟化、全虚拟化、半虚拟化、硬件辅助虚拟化和容器

    目前虚拟化技术有软件模拟.全虚拟化(使用二进制翻译).半虚拟化(操作系统辅助).硬件辅助虚拟化和容器虚拟化这几种. (1)软件模拟 软件模拟是通过软件完全模拟cpu.芯片组.磁盘.网卡等计算机硬件: ...

  5. 三种数据交换技术的比较

    三种数据交换技术的比较 http://book.51cto.com  2007-04-23 17:55  王达  电子工业出版社  我要评论(1) 摘要:本章主要介绍局域网.广域网,以及OSI各层主要 ...

  6. 虚拟化技术能将多个物理服务器,VMware专家:虚拟化技术十大误区

    尽管服务器虚拟化技术已经逐渐普及,但是我们仍不能忽视对虚拟化技术的理解误区,常见有如下十大理解应用误区,下面在此逐一分析. 误区1:虚拟化技术可以实现多台物理服务器资源整合,从而实现单个应用通过虚拟化 ...

  7. 虚拟化技术的实现(完全虚拟化、硬件辅助虚拟化)

    文章转载至网易云架构师刘超的个人微信号 内核,是指的操作系统内核. 所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储. 计算指CPU和内存,网络即网 ...

  8. 开启硬件辅助虚拟化——Intel虚拟化之旅

    English Title: Turn on Hardware-Assisted Virtualization within Virtual PC 2007(sp1) mail to: withtu@ ...

  9. 由于虚拟机监控程序未运行,无法启动 Windows Phone Emulator。可能原因是为打开硬件辅助虚拟化。的解决方法

    运行windows phone 8 的程序时,提示以下错误: 由于虚拟机监控程序未运行,无法启动 Windows Phone Emulator.可能原因是为打开硬件辅助虚拟化. 导致打不开虚拟机. 看 ...

  10. 虚拟化技术可以将一台物理服务器虚拟成,服务器虚拟化技术在实验室中的应用...

    第 3 2 卷 第 7 期 (上 ) 201 6年 7 月 赤 峰 学 院 学 报 (自 然 科 学 版 ) Journal of Chifeng University (Natural Scienc ...

最新文章

  1. c++窗口管理系统是什么_优秀的食堂管理系统让你对校园生活更充满希望
  2. mybatis plus 使用函数_这些Mybatis-Plus使用技巧,太火了
  3. Python编程基础:第五十三节 匿名函数Lambda Function
  4. oracle 减少回表,減少oracle sql回表次數 提高SQL查詢性能 | 學步園
  5. java乱码解决方法
  6. linux mysql配置文件修改编码,linux修改mysql字符集编码
  7. Linux内核源代码分析——vmstat核心代码注释
  8. c语言求英文字母编号,菜鸟求助,写一个随机输出26个英文字母的程序
  9. getdistance mysql_mysql 自定义函数获取两点间距离
  10. 最长回文子串——马拉车算法详解
  11. autocad 二次开发 拆分图纸_谈谈AUTOCAD.NET二次开发的一些经验(一)
  12. 云计算与虚拟化技术发展编年史
  13. Re5:读论文 TWAG: A Topic-guided Wikipedia Abstract Generator
  14. 最短路径算法|Dijkstra‘s Algorithm
  15. 一文带你盘点市场上主流的BI产品主要有哪些
  16. 基础理论知识复习(上)
  17. 语音数字信号处理系统设计(含matlab程序)
  18. 长沙理工大学计算机电路b试题,长沙理工大学考试试卷(计算机网络)
  19. 架设个人FTP——ServU
  20. GameFi独角兽区块帝国,今日开启全球IDO

热门文章

  1. 【渝粤题库】陕西师范大学209020 史记研究 作业(专升本)
  2. c 文件中调用 cpp 中函数
  3. Linux-开启Apache的虚拟主机功能(基于IP地址、基于主机域名、基于IP:端口号)
  4. 大学生购买笔记本电脑防坑指南
  5. ALS算法介绍(协同过滤算法介绍)
  6. Django项目实战——10—(修改地址前后端逻辑、删除地址前后端逻辑、设置默认地址、修改密码、虚拟机安装docker/FastDFS、电商-商品知识、首页广告数据库表分析、商品信息数据库表分析)
  7. 一文详解高功率音频放大器的设计准则与诀窍
  8. 武汉最最最牛逼的IT公司全在这了
  9. 武汉有哪些牛逼的互联网公司?
  10. securecrt 终端VIM配色