分析:如何为虚拟环境选择CPU与处理器

互联网 | 编辑: 杨雪姣 2009-07-01 00:00:00转载 返回原文

第一页

为虚拟化部署选择CPU

当购买CPU时,首先选择的是牌子:AMD还是英特尔?过去几年围绕着这两者进行了许多性能研究。随着处理器架构的持续变更,AMD有时超过了英特尔,有时又落后。英特尔和AMD都在他们最新的处理器里集成了虚拟化技术,分别是Intel Virtualization Technology(Intel VT)和AMD Virtualization(AMD V),以加速虚拟服务器里的指令执行。

英特尔与AMD处理器的主要区别在于物理架构。英特尔使用前端总线模式连接处理器到内存控制器,而AMD在每个处理器上使用集成的内存控制器,让处理器通过超线程互联。取决于什么样的系列,这些处理器有不同的能源消耗级别。

当你比较拥有相似的速度、功能和核心数量的处理器时,英特尔和AMD的性能都差不多。一些性能研究显示英特尔处理器在性能方面更具优势,其他研究则相反。英特尔和AMD处理器在VMware ESX主机里都工作得很好,因此在选择时与个人的品牌爱好相关。由于英特尔和AMD不断发布新的处理器系列,在你作出选择之前应该查看一下哪个目前有最先进的技术。

因此该选择哪类CPU?一般来说习惯了什么牌子就坚持使用,尤其是目前服务器已经使用了某个牌子。这样做的原因是如果主机运行在不同的处理器上时,你不能从一台主机移动运行着的虚拟机到另一台。(参见AMD演示英特尔与AMD处理器之间的热迁移)例如,使用英特尔处理器的虚拟机启动在一台主机上,如果在其运行时移动到使用AMD处理器的主机上,一般会崩溃。如果你决定使用不同牌子的处理器,处于兼容性考虑,最好将使用相同牌子处理器的主机隔离在分开的集群里。
 
处理器选择:虚拟化扩展

当购买处理器时,选择优化虚拟化的模式,如有AMD-V或Intel-VT 扩展。为了弄清扩展为什么重要,你需要了解环与CPU是如何工作的。

x86操作系统使用保护环提供保护级别,以便代码的执行。这些环以等级排列,从最有特权的(Ring 0)到最少特权的(Ring 3),这些都由对处理器有限制的CPU执行。在未虚拟化的服务器上,宿主在Ring 0里的操作系统拥有运行在Ring 3里的服务器硬件与应用。在虚拟化系统上,hypervisor和虚拟机监控器(VMM)需要运行在Ring 0,因此虚拟机子操作系统必须在Ring 1里。由于多数操作系统必须运行Ring 0,VMM工具通过捕获特许指令和模拟Ring 0到子虚拟机,让子操作系统以为它运行在Ring 0。

不过这个操作会降低性能,因此英特尔与AMD开发了Intel VT和AMD-V解决这个问题。这两种技术都整合在CPU里,因此VMM能运行在新的叫做Ring -1的环里,这允许子操作系统天生运行在Ring 0里。这种在CPU的扩展提升了性能。VMM不再让子操作系统以为它运行在Ring 0里,因为子操作系统能在此操作,并且不会与VMM冲突,它已经移动到新的Ring 1级别。为了从虚拟主机获取最好的性能,选择使用这些虚拟化优化的扩展CPU。

同样,继续留意AMD和英特尔未来支持嵌入页表(NPT)的处理器。AMD的版本是Rapid Virtualization Indexing(RVI),英特尔的是Extended Page Tables(EPT)。这种新CPU技术能帮助降低虚拟化大型应用(如数据库)的性能开销。

选择多核CPU

另一个关键选择是物理CPU(插座)的数量和CPU应该拥有的核心数量。多核CPU结合在单个物理CPU上的多个核心,这样的例子是拥有两个四核心CPU的服务器有八个处理器可用。取决于CPU的牌子和模式,这些核心有时候共享一个缓存,或每个核心有连个独立的Level 2缓存。多数虚拟化软件厂商通过插座销售许可,而不是通过每个插座拥有的核心数量,因此多核心处理器最适合虚拟化。对于新服务器,多核心CPU现在几乎是标准要求。

你也必须在双核和四核CPU之间作出选择。基于可以拥有多个核心的推断,你可能倾向于选择四核而不是双核。但是双核和四核有重大的差异。CPU核心数量的增加并不一定伴随着CPU时钟频率的增加。一个3.2GHz的CPU比1.6GHz的CPU快了一倍,但是四核心的CPU不比一核心的快四倍。一个双核心的CPU几乎比单核心CPU快50%(而不是你想象的100%),四核心的CPU可能只比双核心的快25%。此外,双核心的CPU一般比四核的时钟频率高。四核CPU产生过度的热量,导致频率没有单核和双核CPU高。

第二页

一般来说,在虚拟主机使用四核CPU出于两个因素。第一个是多数虚拟化软件通过服务器里的插座数量许可,而不是所拥有的核心数量。这意味着你能比购买在每个许可上获取更多的CPU。第二个因素是在主机服务器里拥有更多核心的话,当尝试调度由虚拟机发送的CPU请求时,给hypervisor CPU调度带来更高的灵活性。拥有更多可用的核心使CPU调度工作更轻松,并且提升了主机上的虚拟机性能。

不过在某些情况下,双核CPU比四核更适合(例如,如果你不打算在主机上运行六到八台虚拟机)。双核CPU更快的频率增加了虚拟机的运行速度。此外,如果你计划给虚拟机分配单独的虚拟处理器,双核处理器是更佳的选择,因为拥有单个虚拟CPU的虚拟机比拥有多个虚拟CPU的更容易让hypervisor调度。

为虚拟化选择内存

你是不希望克扣内存的,因为耗光一台主机的第一个硬件资源是普遍的。当主机上有大量的其他可用资源(CPU、磁盘、网络等)时就没有足够的内存了,这就会限制主机上放置的虚拟机数量。虽然一些虚拟化软件有内存过量使用功能,但是不建议消耗光所有的物理主机内存,因为这会影响虚拟机的性能。

一台服务器的内存类型由服务器所支持的决定,因此检查服务器规格或者使用在线购买指南看看是否能用。检查你的服务器上有多少个内存槽和内存是否需要成对安装。

由于可以在服务器里使用双列直插内存模块DIMM(例如512MB、1GB、2GB等),你应该选择一个与服务器所需的内存数量工作的DIMM大小。尺寸较大的内存DIMM(例如4GB或8GB)比尺寸小的更贵,但是它们使用较少的内存槽以预留更多空间,方便未来扩展。一旦选择了DIMM大小,就继续使用。服务器里混合的DIMM会导致性能的降低。最好在内存槽里使用中等大小的DIMM。

除了大小,基于内存模块的峰值数据传输率也有许多不同的内存类型(例如PC2100和PC5300)。原先"PC"后面的数字用于标注代表数据传输时钟频率的内存模块,如PC133。后来变成了以Mbps表示的峰值数据传输率,因此被划分为PC5300的内存拥有的峰值数据传输率是5300Mbps。多数服务器能使用几个不同的内存类型,因此如果你能负担的话选择最快的内存。

最后与内存相关的决策是你必须在单个、双个和四个级别的DIMM之间作出选择。一个内存等级定义为64位或72位块用于纠错码(ECC)内存,通过使用DIMM上的DRAM芯片创建。例如,单个队列联合所有芯片到单个块,而双队列DIMM将芯片飞到两个块里。双队列通过在一个模块的空间里放置两个单队列DIMM,增加了内存密度,使得它们比单队列DIMM更便宜。

不过在一些情况下,服务器的芯片组只能支持特定数量的队列。如果服务器的内存总线有四个DIMM插槽,芯片组只能支持两个双队列DIMM或者四个单队列DIMM。如果安装两个双队列DIMM,剩下的两个插槽不能使用。如果DIMM插槽里队列的总数量超过了芯片组能支持的最大数量负载,服务器可能不能正常运行。

因此,应该选择何种类型的DIMM?单队列DIMM允许服务器利用其最大内存容量并达到最高性能级别,但由于密度高,成本也高。双队列DIMM更便宜,但是限制了整个系统容量和未来的升级选择。如果你预算够的话就使用单队列。如果不够,双队列也行。在一些服务器上,单队列和双队列DIMM可以混合使用(不过不推荐这样做)。要有好的效果,尝试在所有插槽里使用相同类型的队列。

最后,市场上有几个内存制造商,但最好不要在服务里混合使用各种内存。内存配置与选择很复杂,所以经常向服务器硬件厂商咨询,确保为你的服务器选择合适的硬件。

返回原文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑