云盘算底子-盘算虚拟化-内存虚拟化

打印 上一主题 下一主题

主题 526|帖子 526|积分 1578

内存的工作原理

内存在物理上是由内存卡提供的,也就是我们俗称的内存条,内存条提供了物理内存。
在物理内存之上还有虚拟内存,虚拟内存操纵系统给步伐分配的一段连续的内存,属于逻辑上的概念。
虚拟内存和物理内存之间会有一个映射关系,这个映射关系我们称之为页表,通过页表,软件可以把数据真实的写到物理内存里
比如在电脑上打开一个步伐,比如打开微信,这时操纵系统会给微信分配一段连续的虚拟内存空间,但是这个虚拟内存空间它仅仅是一个逻辑上的概念,当这个步伐须要往物理内存里写东西的时候,它首先找到虚拟内存,通过虚拟内存和物理内存之间映射关系的页表,软件就可以把数据真实的写到物理内存里。对于软件来说,它本身能看到的只是分配给它的这个虚拟内存空间,它是看不到底层的物理内存的,
总结一下:
· 物理内存:内存条,内存数据真实存放的物理设备。
· 虚拟内存:操纵系统给应用步伐分配的一段连续的虚拟内存空间,并没有真实的实体存在。
· 页表:记载了物理内存和虚拟内存之间的映射关系

内存虚拟化架构

当在物理机上起了一台虚拟机之后,虚拟机要将数据写入到物理内存须要经历三次映射。如下图,以是为什么虚拟相比物理机性能是有降落的,仅内存读写的操纵,原先只须要经过一次映射,而虚拟机则须要经过三次映射
· 宿主机物理内存地点:物理机上内存条的物理内存地点
· 宿主机虚拟地点:Host OS给运行在物理机上的应用分配的虚拟内存地点,Hypervisor本质上也是操纵系统上的一个应用。
· 客户机物理地点:虚机的物理内存地点,由于虚拟机作为一台完备的设备也是有物理内存地点的,只不过虚机的物理内存是由Hypervisor使用宿主机给Hypervisor分配的虚拟内存地点模拟出来的。
· 客户机虚拟地点:虚机的操纵系统GuestOS给运行在 虚机上的应用分配的虚拟内存地点。
第一次映射:客户机系统页表--虚拟机的虚拟内存地点到虚拟机的物理内存地点(Hypervisor模拟)
第二次映射:内存槽--虚拟机的物理内存地点(Hypervisor模拟)到物理机的虚拟内存地点
第三次映射:宿主机系统页表--物理机的虚拟地点到宿主机物理地点

MMU虚拟化

传统MMU(内存管理单元)负责虚拟地点映射为物理地点,主要包含两种技术
· Software technique:shadow page tables(影子页表)
· Hardware technique:Inter EPT and AMD RVI

shadow page tables(影子页表)

· 影子页表是VMM(Hypervisor)在宿主机内核中为虚拟机进程维护了一个虚拟机的虚拟地点到宿主机物理地点的页表,这个页表和虚拟机内核的页表同步更新。
虚拟机上的应用想要调度底层物理硬件的物理地点须要经理三次映射:
· 虚拟机的虚拟内存地点到虚拟机的物理内存地点
· 虚拟机的物理内存地点到物理机的虚拟内存地点
· 物理机的虚拟内存地点到物理机的物理内存地点
每次虚拟机应用要在内存中读写数据,都须要经历三次映射,这样工作量太大,这时技术职员就想出一个办法,在这三张页表都建立完成后,再创建一张新的页表:影子页表,影子页表记载了虚拟机的虚拟内存地点到物理机的物理内存地点之间的映射。这样虚拟机读写内存时不须要经过三次查找,而是直接读第四张影子页表,就可以直接从虚拟机的虚拟内存地点直接到物理内存地点,极大提拔了虚拟机应用的内存读写服从


影子页表适合于一次写入、频仍读取的场景。
随着互联网技术的发展,影子页表在一些特定的场景下页出现了一些其他的问题。举个例子:
比如说网络游戏,在网络游戏中多人在线上同时玩,网络游戏公司为了防止各人作弊,比如说英雄的金钱、血量等,这些其实都已一个一个的数据存在内存中的,对于一些黑客来说,他就可以找到那个内存然后更改这个内存中的数据,这样的话就会影响游戏的公平性。
以是游戏公司开发了一个动态内存技术,将游戏中的一些关键数据动态的存储在内存中,它大概每秒就变一次,第一秒在第一个内存空间里,第二秒系统就自动的把它随机挪到另一个物理内存空间里。
对于这种场景,影子页表就会产生一个巨大的问题,由于影子页表是三张页表建立完成后,影子页表直接将虚拟机的虚拟内存地点映射到物理机的物理内存地点,而动态内存的场景下,由于数据在内存中是动态存放的,以是,内存中的数据每更新一次存放位置,三张页表也须要更新映射关系,由于有影子页表的存在,还要等三张页表更新完成后再更新第四张影子页表。
以是在这种动态内存场景中,假如用之前的笨方法,映射三次,那它的处理时间就是延长三倍,假如用影子页表,它还要创建第四张页表,在这种场景下,它不光没有提拔性能,反而增长了负担。以是影子页表适合于一次写入、频仍读取的场景。
以是这个技术随着IT技术的发展,在一些特定的场合下是没有使用空间的

Inter EPT and AMD RVI

· 基于硬件的内存虚拟化技术,也叫硬件辅助内存虚拟化,英特尔的叫Inter EPT,AMD的叫 AMD RVI,主要实现了虚拟机虚拟地点到宿主机物理地点“一步到位”的自动映射

Inter EPT and AMD RVI在CPU里新增了一个硬件:TLB(Translation look-aside buffer,转换查找缓冲器)
原先虚拟机上的应用须要调度物理内存须要经历三次映射,这三次映射它的运算都是要靠CPU和内存完成的,这三次映射都会占用一部分CPU和内存资源,从而造成了虚机性能降落。
如今硬件辅助内存虚拟化增长了一个专门的硬件TLB,这个硬件的功能就是完成那三次映射运算的,这样那三次映射的运算就不用再占用CPU和内存资源,这个专用的硬件是针对映射算法进行了专门的优化的,它的转换速度是非常快的。这个技术就对于提拔虚拟机内存虚拟化后的性能有一个显著的帮助
这个技术也是须要在BIOS里开启,有些服务器开了CPU虚拟化会同步把内存虚拟化也开启,有些须要单独打开

Inter EPT and AMD RVI在CPU里新增了一个硬件:TLB(Translation look-aside buffer,转换查找缓冲器)
原先虚拟机上的应用须要调度物理内存须要经历三次映射,这三次映射它的运算都是要靠CPU和内存完成的,这三次映射都会占用一部分CPU和内存资源,从而造成了虚机性能降落。
如今硬件辅助内存虚拟化增长了一个专门的硬件TLB,这个硬件的功能就是完成那三次映射运算的,这样那三次映射的运算就不用再占用CPU和内存资源,这个专用的硬件是针对映射算法进行了专门的优化的,它的转换速度是非常快的。这个技术就对于提拔虚拟机内存虚拟化后的性能有一个显著的帮助
这个技术也是须要在BIOS里开启,有些服务器开了CPU虚拟化会同步把内存虚拟化也开启,有些须要单独打开


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表