AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 661209
Accepted
realMarkusSchmidt
realMarkusSchmidt
Asked: 2015-01-22 05:16:12 +0800 CST2015-01-22 05:16:12 +0800 CST 2015-01-22 05:16:12 +0800 CST

为 Hyper-V 主机禁用 SpeedStep 的最佳做法?

  • 772

我正在分析一个问题,即虚拟机中受 CPU 限制的工作负载的性能通常(并非总是)远低于我们基于底层硬件的预期。

我们在 Windows Server 2012 R2 上使用 Hyper-V。该服务器具有双 Intel Xeon E5-2643 v2 @ 3.50 GHz。

以下是一些似乎相关的数字:

  • Hyper-V 管理程序逻辑处理器,% 总运行时间,实例 _Total:平均 20%
  • Hyper-V Hypervisor Virtual Processor, CPU Wait Time Per Dispatch, Instance _Total: Average 20000到另一个 VM 的逻辑 CPU;似乎转换为 2% 的开销)
  • Hyper-V 管理程序逻辑处理器,最大频率百分比,实例 _Total:平均 34%
  • CPU-Z 工具显示两个处理器的核心 #0 的大部分时间都在 1200 MHz 左右(与性能监视器报告的最大频率百分比非常匹配)

在只有几个内核的桌面上,一旦 CPU 密集型活动开始,内核速度就会立即提高。

然而,在我们的 Hyper-V 主机上,核心速度似乎只有在整体系统负载似乎高了几秒钟的情况下才会上升。现在,例如,如果您的 VM 具有总共 24 个物理 CPU 中的 4 个虚拟 CPU(启用了超线程),并且该 VM 需要 CPU 电源,并且 VM 内的任务管理器显示几乎 100% 的 CPU 使用率,大部分时间是时钟物理CPU的速度不会上升,性能很差。

显然这是不受欢迎的行为。考虑一个数据库服务器,它需要 3 倍的时间来回答查询,因为服务器没有“足够”的负载来提高 CPU 频率。这没有任何意义。

我发现一篇博客文章描述了 2011 年以来 VMWare 和 Cisco 刀片的完全相同的行为。我在其他任何地方都没有找到这方面的信息。

实际上,我可以通过切换到 Windows 中的“高性能”电源计划来摆脱这种行为powercfg.cpl,但代价是用电量增加了大约 30%。我实际上获得了更好和更一致的性能,并且性能监视器显示了更低的负载数字。

(在较旧的服务器上,我发现了一个附加设置“处理电源管理 | 最低处理器状态”,可以设置为 100% 而无需禁用所有其他省电选项。新的仅显示“系统冷却策略”,它处于“活动”状态“即使是“平衡”计划,所以我唯一的选择是选择“高性能”。)

这真的是 Hyper-V 主机的最佳实践,还是有其他解决方法?如果 SpeedStep 真的是个问题,我想知道为什么他们甚至将其构建到服务器 CPU 中并默认启用它,以及为什么我从未在 Hyper-V 配置指南中阅读过有关此设置的信息?

hyper-v
  • 3 3 个回答
  • 13153 Views

3 个回答

  • Voted
  1. Best Answer
    realMarkusSchmidt
    2015-01-23T04:36:44+08:002015-01-23T04:36:44+08:00

    经过一番搜索,这似乎是现代服务器 CPU 的普遍问题,甚至与虚拟化无关,主要服务器供应商以及微软和 VMWare 等软件供应商在他们的产品中使用人为限制 CPU 性能的默认设置。我仍然觉得这很难相信。

    对于任何关心立即获得每个内核的完整 CPU 功率而不一开始所有内核都处于忙碌状态的人的解决方案是禁用节能(Intel SpeedStep/EIST 或 AMD Cool'n'Quiet)。根据您的 BIOS 设置,这可以在操作系统级别(如 Windows powercfg.cpl“高性能”计划)或通过 BIOS 进行控制,在这种情况下,操作系统设置为灰色。

    Brent Ozar 在 2011 年写了这篇文章(“SQL Server on Power-Saving CPUs? Not So Fast.”):

    在过去的几周里,我看到了几个服务器升级导致性能下降的案例,其中一个关键因素是 CPU 的节流。理论上,服务器应该根据需求来增加果汁,但实际上,这种情况很少见。服务器制造商在 BIOS 中隐藏了省电设置,而 Windows Server 附带了一个默认的省电选项,该选项过于频繁地降低 CPU 的速度。

    微软在KB2207548中说:

    在某些情况下,在 Windows Server 2008 R2 计算机上使用默认(平衡)电源计划运行时,您可能会遇到整体性能下降的情况。无论平台如何,该问题都可能发生,并且可能在本机和虚拟环境中出现。性能下降可能会增加某些任务的平均响应时间,并导致 CPU 密集型应用程序出现性能问题。[...] 如果将电源选项设置设置为平衡,则可能会出现此问题。默认情况下,Windows Server 2008 R2 设置平衡(推荐)电源计划

    Win2008R2 有一个可用的修补程序,建议更新 BIOS,但由于这仍然是 Win2012R2 的问题,因此似乎无法绕过第二个建议,“高性能”计划。

    KB2534356中描述了具有类似症状的问题,该问题还提供了仅适用于 Win2008R2 的修补程序。所以对我来说,只有通常的解决方法适用(高性能计划),但听起来将来可能会有修复。(它在台式机 CPU 上运行良好,所以我不明白为什么它不应该在服务器上实现。)

    我会更新这个答案,以防我找到更好的解决方案(或者如果其他人发布解决方案,当然会更改接受的答案)。

    仍然想知道 EC2 或 Azure 是否可能有同样的问题(在这种情况下,您将无法对此做任何事情,因为您需要控制主机,更改 VM 中的设置不会产生任何影响)。

    更多参考资料:

    • 虚拟化时考虑 CPU 功率优化与性能(2011 年;2013 年跟进)
    • DBPM 如何影响访客虚拟机性能(2013)
    • 高 CPU 准备好低 CPU 利用率了吗?(在遇到高“CPU 就绪”数据时对 VMWare 的建议相同)
    • 7
  2. Jim B
    2015-01-22T11:51:18+08:002015-01-22T11:51:18+08:00

    我只是偶尔看到这个。理论上speedstep(这似乎越来越成为一个不可配置的选项),不应该影响你的表现。然而,当它被降级时,你突然忙于一个虚拟机,有时处理器似乎认为它不够用。我不确定这是 Microsoft 的问题,因为正如您提到的 VMware 和 Cisco 有同样的问题。

    • 0
  3. YuKYuK
    2015-01-22T07:23:27+08:002015-01-22T07:23:27+08:00

    它是服务器上的一个 BIOS 功能,用于删除 speedstep。在 IBM 刀片上,它有一个默认的 bios 选项:没有 speedstep,有时也没有 turbo。检查该博客的技术细节:

    https://workinghardinit.wordpress.com/tag/c-states/

    “根据您的发现和需求,您可能只想在 BIOS 或 Windows 中关闭 SpeedStep 或 Cool'n'Quiet”因此,如果您遇到问题,请将其关闭。

    并且在 BIOS 中检查虚拟指令是否在错误的 BIOS 中未关闭。

    不要忘记在旧操作系统上添加“hyperv 工具”以获得更好的“虚拟感知操作系统”。

    • -2

相关问题

  • Hyper-V 企业许可 - 包含的 CAL 是否应用于每个 VM 或每个 VM?[复制]

  • Hyper-V 和 Drobo Pro

  • 小型企业的服务器虚拟化/RAID 配置

  • 交换服务器 2003 在 hyper-v 上

  • 在同一台机器上将域控制器作为 1 个 VM 和一个 RODC 作为另一个 VM 运行,它会工作吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve