服务器 频道

AMD产品经理解读新“巴塞罗那”

三项改进大幅度提高虚拟化能力

根据梁宏伟先生的介绍,新巴塞罗那针对虚拟化应用做了许多的专门改进。除了本身的架构,AMD从X86领域之外引入了RVI的功能,还有标签式的技术,主要为了解决虚拟化的性能我问题。此外,新巴塞罗那还增添有DEV性能列表,来解决安全性的问题。

    虚拟化是近几年X86服务器领域非常热一个话题。但虚拟化的很多应用都是从其他一些大型机逐步迁移到今天主流的工业标准X86中。这些服务器并不是为虚拟化环境定制,在虚拟化应用的时候,整个物理机器被分割成很多的部分供逻辑机使用。在这个前提下,最基本的特点就是不能修改操作系统和应用相关的东西,否则客户的应用就会非常复杂。

    在这样大的背景下需要一个中间层,也就是虚拟化层要在中间协助虚拟机。以往一台服务器独占一个操作系统,现在要变成被许多的虚拟机共享,所以面临很多新的问题,比如说内存要对很多的虚拟机同时共享。在这里面,AMD引入了一个设备列表这样一个工具,在内存控制器里面做了很多页面,会记忆不同虚拟机引用的页面。这会解决虚拟机对内存访问安全性的问题。

    第二项为增强虚拟化性能所作的改进叫做Tagged TLB。虚拟机从逻辑的角度是独占系统,从物理角度是分时再去用。整个虚拟机以一种任务的形式在里面去运行,当有不同虚拟机切换的时候,尤其要访问内存的时候系统会有一张列表记录在什么时间段最近访问内存页面的信息,所有的虚拟机是交替运行的,这个页面列表其实只有一个任务号是对应的。

    举例来说,在不同虚拟机使用内存的时候,传统上的结构就不得不对这张页表进行重写。等虚拟机做完很短的操作以后,轮到下一个虚拟机运行的时候这个页表就不能再用了,如果再次使用的话,所读取的数据就会是错误的东西。所以必须根据下一个虚拟机要用的东西进行重建。所以这样大量的时间会进行页表的维护,从而浪费很多的时间,而影响到虚拟机的性能。

    为了解决这个问题,新一代巴塞罗那里面我们会看到开了一个缓存区在里面,我们为每一个虚拟机分配一个单独的任务号。可以做到256个,再加上页表的配合,实际上为每一个虚拟机建立了最近对内存访问的页表。所以切换的时候这个页表不需要再进行重建。所以虚拟机重新访问内存的时候,只要查相应的表单就可以了,所以通过TLB可以大幅度提升对内存访问转换的效率。

    第三项提升虚拟化性能的改进仍然是针对内存地址改进的。本身虚拟化是一个典型大内存的应用。AMD TLB技术可以对大内存进行很好的管理。但是仍然有一些问题无法解决,因为地址的访问是非常复杂的,TLB只会知道这个虚拟机最近用到了哪些内存,在什么位置,尽管我们能够得到一个内存号。但这个号是虚拟机的号,虚拟机的内存页面并不是真正物理上安装的一些物理页面。所以虚拟机需要自动搜寻实际的物理地址并进行映射,才会知道数据在什么地方。以往我们叫影子页表,是第三方软件管理层进行维护的。

    整个维护影子页表的时间会占用75%的时间,因而影响到整个内存的效能。但是新一代巴塞罗那处理器则可以直接知道地址的映射,这样虚拟机在运行的时候就不需要再借助一个翻译了,可以自己借助于硬件直接实行对地址硬件的有效翻译,所以能够很快对物理内存进行访问。而以往虚拟机和内存谈话的时候中间还需要一个翻译,这个翻译就是我们所知道的hypervisor。当虚拟机能够直接搜寻物理地址后,我们就会发现虚拟机的效率大大提高了。

    因此梁宏伟先生认为,AMD的处理器架构是非常适合做虚拟化的。因为DEV解决了虚拟化安全问题,同时采用了直联架构和快速索引。同时新一代巴塞罗那采用了大内存结构提供更大内存的容量,包括更短内存的延迟,因此新一代巴塞罗那在节能的同时,也提供了一个最好的虚拟化的性能支持。

0
相关文章