cPU虚拟化基本知识 3 cP∪虚拟化着重于性能,只要有可能就会直接在处理器上运行。只要有可能就会使用基础物理资源,且虚 拟化层仅在需要时才运行指令,使得虚拟机就像直接在物理机上运行一样。 CPU虚拟化与仿真不同。ESXi不使用仿真来运行虚拟CPU。采用仿真时,所有操作均由仿真器在软件中运 行。软件仿真器允许程序在不同于最初编写时所针对的计算机系统上运行。仿真器通过接受相同的数据或输 入并获得相同的结果,来模拟或再现原始计算杋的行为,从而实现仿真。仿真提供了可移植能力,并在几个 不同平台上运行针对一个平台而设计的软件 CPU资源过载时,ESXi主机将在所有虚拟机之间对物理处理器进行时间划分,以便每个虚拟机在运行时就 如同具有指定数目的虚拟处理器一样。运行多个虚拟机的ESXi主机会为各虚拟机分配一定份额的物理资源。 如果使用默认资源分配设置,与同一主机关联的所有虚拟机都将在每个虚拟CPU上收到相同份额的CPU。 这意味着单处理器虚拟机分配到的资源只有双处理器虚拟机的一半。 本章讨论了以下主题: 基于软件的CPU虚拟化 硬件辅助的CPU虚拟化 虚拟化和特定于处理器的行为 cPU虚拟化的性能影响 基于软件的CPU虚拟化 采用基于软件的cPU虚拟化后,客户机应用程序代码直接在处理器上运行,同时转换客户机特权代码并在 处理器上运行转换后的代码。 转换后的代码有点大,通常比本机版本的运行速度慢。因此,具有少量特权代码组件的客户机应用程序的运 行速度与本机应用程序非常接近。而具有大量特权代码组件(如系统调用、陷阱或页面表更新)的应用程序 在虚拟环境中的运行速度可能较慢。 硬件辅助的CPU虚拟化 某些处理器为CPU虚拟化提供硬件辅助。 VMware,lc保留所有权利
CPU 虚拟化基本知识 3 CPU 虚拟化着重于性能,只要有可能就会直接在处理器上运行。只要有可能就会使用基础物理资源,且虚 拟化层仅在需要时才运行指令,使得虚拟机就像直接在物理机上运行一样。 CPU 虚拟化与仿真不同。ESXi 不使用仿真来运行虚拟 CPU。采用仿真时,所有操作均由仿真器在软件中运 行。软件仿真器允许程序在不同于最初编写时所针对的计算机系统上运行。仿真器通过接受相同的数据或输 入并获得相同的结果,来模拟或再现原始计算机的行为,从而实现仿真。仿真提供了可移植能力,并在几个 不同平台上运行针对一个平台而设计的软件。 CPU 资源过载时,ESXi 主机将在所有虚拟机之间对物理处理器进行时间划分,以便每个虚拟机在运行时就 如同具有指定数目的虚拟处理器一样。运行多个虚拟机的 ESXi 主机会为各虚拟机分配一定份额的物理资源。 如果使用默认资源分配设置,与同一主机关联的所有虚拟机都将在每个虚拟 CPU 上收到相同份额的 CPU。 这意味着单处理器虚拟机分配到的资源只有双处理器虚拟机的一半。 本章讨论了以下主题: n 基于软件的 CPU 虚拟化 n 硬件辅助的 CPU 虚拟化 n 虚拟化和特定于处理器的行为 n CPU 虚拟化的性能影响 基于软件的 CPU 虚拟化 采用基于软件的 CPU 虚拟化后,客户机应用程序代码直接在处理器上运行,同时转换客户机特权代码并在 处理器上运行转换后的代码。 转换后的代码有点大,通常比本机版本的运行速度慢。因此,具有少量特权代码组件的客户机应用程序的运 行速度与本机应用程序非常接近。而具有大量特权代码组件(如系统调用、陷阱或页面表更新)的应用程序 在虚拟环境中的运行速度可能较慢。 硬件辅助的 CPU 虚拟化 某些处理器为 CPU 虚拟化提供硬件辅助。 VMware, Inc. 保留所有权利。 16
《 vSphere资源管理》 使用此辅助时,客户机可以使用独立的执行模式(称为客户机模式)。应用程序代码或特权代码等客户机代 码均在客户机模式中运行。岀现某些事件时,处理器退出客户机模式而进λroot模式。管理程序将在root 模式中执行,确定退出的原因,采取任何必需的措施,并在客户机模式中重新启动客户机。 将硬件辅助用于虚拟化时,不需要再转换代码。因此,系统调用或陷阱密集型工作负载在运行时的速度非常 接近本机速度。但是,诸如涉及更新页面表之类的一些工作负载会导致多次退出客户机模式而进入root模 式。根据退出的次数和退出所用的总时间,硬件辅助的cPU虚拟化可明显提高执行的速度 虚拟化和特定于处理器的行为 尽管 VMware软件会虚拟化CPU,虚拟机仍然能检测出它在其上运行的处理器的具体型号。 处理器型号可能在其提供的cPU功能方面不同,在虚拟机中运行的应用程序可以利用这些功能。因此,无 法使用 vMotion在具有不同功能集的处理器上运行的系统之间迁移虚拟机。在某些情况下,通过将增强型 vMotion兼容性(EvC)用于支持此功能的处理器,可以避免此限制。有关更多信息,请参见《 vCenter server 和主机管理》文档 cPU虚拟化的性能影响 根据工作负载和使用的虚拟化类型,CPU虚拟化会增加不同的开销量 如果应用程序的大多数时间用于执行指令而不是等待用户交互、设备输入或数据检索等外部事件,则应用程 序是受CPU约束的。对于此类应用程序,CPU虚拟化开销包括必须执行的额外指令。此开销消耗应用程序 本身可以使用的CPU处理时间。CPU虚拟化开销通常会导致整体性能下降。 对于不受CPU约束的应用程序,CPU虚拟化可能会提高CPU利用率。如果备用CPU容量可用于吸收开 销,则仍然可以在整体吞吐量方面提供不错的性能。 在每台虚拟机上,ESXi最多支持128个虚拟处理器(CPU)。 注在单处理器虚拟机(而不是带有多个CPU的SMP虚拟机)上部署单线程应用程序可获得最佳的性能和 源利用率 单线程应用程序只能利用单个CPU。在双处理器虚拟机中部署这些应用程序不会加快应用程序的速度。相 反,这样会使得第二个虚拟CPU使用本该由其他虚拟机以其他方式使用的物理资源。 VMware,lc保留所有权利
使用此辅助时,客户机可以使用独立的执行模式(称为客户机模式)。应用程序代码或特权代码等客户机代 码均在客户机模式中运行。出现某些事件时,处理器退出客户机模式而进入 root 模式。管理程序将在 root 模式中执行,确定退出的原因,采取任何必需的措施,并在客户机模式中重新启动客户机。 将硬件辅助用于虚拟化时,不需要再转换代码。因此,系统调用或陷阱密集型工作负载在运行时的速度非常 接近本机速度。但是,诸如涉及更新页面表之类的一些工作负载会导致多次退出客户机模式而进入 root 模 式。根据退出的次数和退出所用的总时间,硬件辅助的 CPU 虚拟化可明显提高执行的速度。 虚拟化和特定于处理器的行为 尽管 VMware 软件会虚拟化 CPU,虚拟机仍然能检测出它在其上运行的处理器的具体型号。 处理器型号可能在其提供的 CPU 功能方面不同,在虚拟机中运行的应用程序可以利用这些功能。因此,无 法使用 vMotion® 在具有不同功能集的处理器上运行的系统之间迁移虚拟机。在某些情况下,通过将增强型 vMotion 兼容性 (EVC) 用于支持此功能的处理器,可以避免此限制。有关更多信息,请参见《vCenter Server 和主机管理》文档。 CPU 虚拟化的性能影响 根据工作负载和使用的虚拟化类型,CPU 虚拟化会增加不同的开销量。 如果应用程序的大多数时间用于执行指令而不是等待用户交互、设备输入或数据检索等外部事件,则应用程 序是受 CPU 约束的。对于此类应用程序,CPU 虚拟化开销包括必须执行的额外指令。此开销消耗应用程序 本身可以使用的 CPU 处理时间。CPU 虚拟化开销通常会导致整体性能下降。 对于不受 CPU 约束的应用程序,CPU 虚拟化可能会提高 CPU 利用率。如果备用 CPU 容量可用于吸收开 销,则仍然可以在整体吞吐量方面提供不错的性能。 在每台虚拟机上,ESXi 最多支持 128 个虚拟处理器 (CPU)。 注 在单处理器虚拟机(而不是带有多个 CPU 的 SMP 虚拟机)上部署单线程应用程序可获得最佳的性能和 资源利用率。 单线程应用程序只能利用单个 CPU。在双处理器虚拟机中部署这些应用程序不会加快应用程序的速度。相 反,这样会使得第二个虚拟 CPU 使用本该由其他虚拟机以其他方式使用的物理资源。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 17
管理CPU资源 可以为虚拟机配置一个或多个虚拟处理器,每个处理器均具有自己的寄存器和控制结构集合。 当调度虚拟机时,会调度其虚拟处理器在物理处理器上运行。 VMkerne资源管理器在物理CP∪上调度虚拟 CPU,从而管理虚拟机对物理CPU资源的访问。ESXⅰ支持虚拟机最多具有128个虚拟CPU。 注在本章中,“内存”可以指物理内存或永久内存 本章讨论了以下主题 查看处理器信息 指定CPU配置 多核处理器 超线程 使用CPU关联性 主机电源管理策略 查看处理器信息 您可在 vSphere Client中访问关于当前cPU配置的信息。 1在 vSphere Client中,浏览到主机 2单击配置,然后展开硬件。 3选择处理器查看有关物理处理器数量和类型以及逻辑处理器数量的信息。 注在超线程系统中,每个硬件线程都是一个逻辑处理器。例如,启用了超线程的双核处理器具有两个 内核和四个逻辑处理器。 指定cPU配置 可以通过指定CPU配置来改进资源管理。但是,如果未自定义CPU配置,则ESX主机会使用适合大多数 情况的默认值。 VMware,lc保留所有权利
管理 CPU 资源 4 可以为虚拟机配置一个或多个虚拟处理器,每个处理器均具有自己的寄存器和控制结构集合。 当调度虚拟机时,会调度其虚拟处理器在物理处理器上运行。VMkernel 资源管理器在物理 CPU 上调度虚拟 CPU,从而管理虚拟机对物理 CPU 资源的访问。ESXi 支持虚拟机最多具有 128 个虚拟 CPU。 注 在本章中,“内存”可以指物理内存或永久内存。 本章讨论了以下主题: n 查看处理器信息 n 指定 CPU 配置 n 多核处理器 n 超线程 n 使用 CPU 关联性 n 主机电源管理策略 查看处理器信息 您可在 vSphere Client 中访问关于当前 CPU 配置的信息。 步骤 1 在 vSphere Client 中,浏览到主机。 2 单击配置,然后展开硬件。 3 选择处理器查看有关物理处理器数量和类型以及逻辑处理器数量的信息。 注 在超线程系统中,每个硬件线程都是一个逻辑处理器。例如,启用了超线程的双核处理器具有两个 内核和四个逻辑处理器。 指定 CPU 配置 可以通过指定 CPU 配置来改进资源管理。但是,如果未自定义 CPU 配置,则 ESXi 主机会使用适合大多数 情况的默认值。 VMware, Inc. 保留所有权利。 18
《 vSphere资源管理》 可以按以下方式指定cPU配置 使用可通过 vSphere Client访问的属性和特殊功能。使用 vSphere Client可连接ESXi主机或 vCenter Server系统 在某些情况下使用高级设置。 将 vSphere SDK用于脚本式CPU分配 使用超线程。 多核处理器 多核处理器为执行虚拟机多任务的主机提供了很多优势。 注在本主题中,“内存”可以指物理内存或永久内存。 nte和AMD均已开发将两个或更多处理器内核组合到单个集成电路(通常称为封装件或插槽)的处理器。 VMware使用“插槽”一词来描述单个封装件,该封装件可以具有一个或多个处理器内核且每个内核具有 个或多个逻辑处理器。 例如,双核处理器通过允许同时运行两个虚拟CPU,可以提供几乎是单核处理器两倍的性能。同一处理器 中的内核通常配备由所有内核使用的最低级别的共享缓存,这有可能会减少访问较慢主内存的必要性。如果 运行在逻辑处理器上的虚拟机正运行争用相同内存总线资源且占用大量内存的工作负载,将物理处理器连接 到主内存的共享内存总线可能会限制其逻辑处理器的性能 ESXICP心U调度程序独立使用每个处理器内核的每个逻辑处理器来运行虚拟机,从而提供与SMP系统类似 的功能。例如,2路虚拟机可以让虚拟处理器运行在属于相同内核的逻辑处理器上,或运行在不同物理内核 的逻辑处理器上。 ESXICPU调度程序可以检测处理器拓扑,以及处理器内核与它上面的逻辑处理器之间的关系。它使用此信 息来调度虚拟机和优化性能。 ESXICPU调度程序可以解释处理器拓扑(包括插槽、內核和逻辑处理器之间的关系)。调度程序使用拓扑 信息来优化将虚拟CP心U放置到不同插槽的过程。此优化可以最大程度地提高整体缓存使用率,并通过最大 程度减少虚拟CPU迁移来提高缓存关联性 超线程 超线程技术允许单个物理处理器内核像两个逻辑处理器一样工作。处理器可以同时运行两个独立的应用程 序。为了避免将逻辑处理器和物理处理器混淆,lnte将物理处理器称为插槽,本章的讨论也使用这一术语。 Intel Corporation开发了超线程技术来增强 PentiumⅣ和eon处理器系列的性能。超线程技术允许单个处 理器内核同时执行两个独立的线程 VMware,lc保留所有权利
可以按以下方式指定 CPU 配置: n 使用可通过 vSphere Client 访问的属性和特殊功能。使用 vSphere Client 可连接 ESXi 主机或 vCenter Server 系统。 n 在某些情况下使用高级设置。 n 将 vSphere SDK 用于脚本式 CPU 分配。 n 使用超线程。 多核处理器 多核处理器为执行虚拟机多任务的主机提供了很多优势。 注 在本主题中,“内存”可以指物理内存或永久内存。 Intel 和 AMD 均已开发将两个或更多处理器内核组合到单个集成电路(通常称为封装件或插槽)的处理器。 VMware 使用“插槽”一词来描述单个封装件,该封装件可以具有一个或多个处理器内核且每个内核具有一 个或多个逻辑处理器。 例如,双核处理器通过允许同时运行两个虚拟 CPU,可以提供几乎是单核处理器两倍的性能。同一处理器 中的内核通常配备由所有内核使用的最低级别的共享缓存,这有可能会减少访问较慢主内存的必要性。如果 运行在逻辑处理器上的虚拟机正运行争用相同内存总线资源且占用大量内存的工作负载,将物理处理器连接 到主内存的共享内存总线可能会限制其逻辑处理器的性能。 ESXiCPU 调度程序独立使用每个处理器内核的每个逻辑处理器来运行虚拟机,从而提供与 SMP 系统类似 的功能。例如,2 路虚拟机可以让虚拟处理器运行在属于相同内核的逻辑处理器上,或运行在不同物理内核 的逻辑处理器上。 ESXiCPU 调度程序可以检测处理器拓扑,以及处理器内核与它上面的逻辑处理器之间的关系。它使用此信 息来调度虚拟机和优化性能。 ESXiCPU 调度程序可以解释处理器拓扑(包括插槽、内核和逻辑处理器之间的关系)。调度程序使用拓扑 信息来优化将虚拟 CPU 放置到不同插槽的过程。此优化可以最大程度地提高整体缓存使用率,并通过最大 程度减少虚拟 CPU 迁移来提高缓存关联性。 超线程 超线程技术允许单个物理处理器内核像两个逻辑处理器一样工作。处理器可以同时运行两个独立的应用程 序。为了避免将逻辑处理器和物理处理器混淆,Intel 将物理处理器称为插槽,本章的讨论也使用这一术语。 Intel Corporation 开发了超线程技术来增强 Pentium IV 和 Xeon 处理器系列的性能。超线程技术允许单个处 理器内核同时执行两个独立的线程。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 19
《 vSphere资源管理》 虽然超线程不会使系统的性能加倍,但是它可以通过更好地利用空闲资源来提高性能,使得某些重要的工作 负载类型产生更大的吞吐量。如果应用程序运行在忙碌内核的一个逻辑处理器上,则与单独运行在非超线程 处理器上相比,预期获得的吞吐量会稍高于一半。超线程性能改进情况与应用程序有很大关系,有些应用程 序使用超线程可能会出现性能下降的情况,因为两个逻辑处理器之间会共享许多处理器资源(例如缓存)。 注在具有lnte超线程技术的处理器上,每个内核可以具有两个逻辑处理器,这两个逻辑处理器共享大多数 内核资源(如内存缓存和功能单元)。此类逻辑处理器通常称为线程 许多处理器都不支持超线程,因此每个内核仅具有一个线程。对于此类处理器,内核数目还与逻辑处理器的 数目相匹配。以下处理器支持超线程,并且每个内核具有两个线程 基于 Intel Xeon5500处理器微架构的处理器。 ntel Pentium4(支持HT) ■ Intel Pentium EE840(支持HT) 超线程和ESXi主机 支持超线程的主机应具有与没有超线程的主机类似的行为。但是,如果启用超线程,则可能需要考虑某些因 ESXi主机以智能方式管理处理器时间,保证负载均匀分布在系统的多个处理器内核上。相同内核上的逻辑 理器具有连续的cPU编号,因此cPU0和1一起在第一个内核上,而c門U2和3在第二个内核上,依 此类推。优先在两个不同的内核上调度虚拟机,然后才选择在同一内核的两个逻辑处理器上调度虚拟机。 如果逻辑处理器没有工作,则将其置于暂停状况,从而释放其执行资源并允许在同一内核的另一个逻辑处理 器上运行的虚拟机使用该内核的全部执行资源。 Mware调度程序会正确地考虑此暂停时间,因此使用全部 内核资源运行的虚拟机的效率要高于在半个内核上运行的虚拟机。按这种方法管理处理器可确保服务器不会 韦反任何标准的ESX资源分配规则。 在使用超线程的主机上启用CPυ关联性之前,请考虑资源管理需求。例如,如果将高优先级虚拟机绑定到 CPU0,并将另一个高优先级虚拟机绑定到CPU1,则这两个虚拟机必须共享相同的物理内核。这种情况 下,可能无法满足这些虚拟机的资源需求。请确保所有的自定义关联性设置对超线程系统都有意义, 启用超线程 要启用超线程,必须首先在系统的BOS设置中将其启用,然后在 vSphere Client中打开它。超线程在默认 情况下处于启用状态 请查阅系统文档,确定您的CPU是否支持超线程 1请确保您的系统支持超线程技术。 2在系统B|OS中启用超线程。 有些制造商将该选项标记为逻辑处理器,而有些制造商则称之为启用超线程 VMware,lc保留所有权利
虽然超线程不会使系统的性能加倍,但是它可以通过更好地利用空闲资源来提高性能,使得某些重要的工作 负载类型产生更大的吞吐量。如果应用程序运行在忙碌内核的一个逻辑处理器上,则与单独运行在非超线程 处理器上相比,预期获得的吞吐量会稍高于一半。超线程性能改进情况与应用程序有很大关系,有些应用程 序使用超线程可能会出现性能下降的情况,因为两个逻辑处理器之间会共享许多处理器资源(例如缓存)。 注 在具有 Intel 超线程技术的处理器上,每个内核可以具有两个逻辑处理器,这两个逻辑处理器共享大多数 内核资源(如内存缓存和功能单元)。此类逻辑处理器通常称为线程。 许多处理器都不支持超线程,因此每个内核仅具有一个线程。对于此类处理器,内核数目还与逻辑处理器的 数目相匹配。以下处理器支持超线程,并且每个内核具有两个线程。 n 基于 Intel Xeon 5500 处理器微架构的处理器。 n Intel Pentium 4(支持 HT) n Intel Pentium EE 840(支持 HT) 超线程和 ESXi 主机 支持超线程的主机应具有与没有超线程的主机类似的行为。但是,如果启用超线程,则可能需要考虑某些因 素。 ESXi 主机以智能方式管理处理器时间,保证负载均匀分布在系统的多个处理器内核上。相同内核上的逻辑 处理器具有连续的 CPU 编号,因此 CPU 0 和 1 一起在第一个内核上,而 CPU 2 和 3 在第二个内核上,依 此类推。优先在两个不同的内核上调度虚拟机,然后才选择在同一内核的两个逻辑处理器上调度虚拟机。 如果逻辑处理器没有工作,则将其置于暂停状况,从而释放其执行资源并允许在同一内核的另一个逻辑处理 器上运行的虚拟机使用该内核的全部执行资源。VMware 调度程序会正确地考虑此暂停时间,因此使用全部 内核资源运行的虚拟机的效率要高于在半个内核上运行的虚拟机。按这种方法管理处理器可确保服务器不会 违反任何标准的 ESXi 资源分配规则。 在使用超线程的主机上启用 CPU 关联性之前,请考虑资源管理需求。例如,如果将高优先级虚拟机绑定到 CPU 0,并将另一个高优先级虚拟机绑定到 CPU 1,则这两个虚拟机必须共享相同的物理内核。这种情况 下,可能无法满足这些虚拟机的资源需求。请确保所有的自定义关联性设置对超线程系统都有意义。 启用超线程 要启用超线程,必须首先在系统的 BIOS 设置中将其启用,然后在 vSphere Client 中打开它。超线程在默认 情况下处于启用状态。 请查阅系统文档,确定您的 CPU 是否支持超线程。 步骤 1 请确保您的系统支持超线程技术。 2 在系统 BIOS 中启用超线程。 有些制造商将该选项标记为逻辑处理器,而有些制造商则称之为启用超线程。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 20