CPU 负载在各个核心上分布不均匀

CPU 负载在各个核心上分布不均匀

我对 Ubuntu 还很陌生,想从 Windows 环境切换到 Linux 发行版。由于大多数(消费者)Linux 软件都是为 Ubuntu 设计的,所以我选择了这个发行版。一切都运行良好,但最重要的功能之一虚拟机遇到了一些严重问题。

当我在高负载下运行虚拟机时,负载不会均匀分布在所有核心上。我尝试更改虚拟机设置中的 CPU/核心设置以及不同的虚拟机管理程序:

  • 虚拟机
  • 虚拟机
  • 虚拟盒

如果我在 Ubuntu 中运行 CPU 压力测试,所有核心都会运行良好且同步。如果我在 VM 中运行压力测试,某些核心的负载为 100%,而其他核心的负载为 10%。已加载的核心和已加载核心的数量会发生变化。因此,有一次,核心 1 和 3 的负载为 100%,另一次只有核心 4 的负载为 100%。

在“软件更新”>“附加驱动程序”下,英特尔微码设备显示为“未知”。在我看来,这在一定程度上导致了问题。

我真的不知道如何排除故障或修复此问题,因此非常感谢任何意见。

编辑: 我使用 VMware 进行了更多测试:

  • 当我配置两个核心时,几分钟后出现 vcpu 错误
  • 当我仅配置一个核心时,虚拟主机上只有一个核心被使用。当我配置四个核心时,所有核心都被使用。但是,
  • 当我启动配置了四个核心的第二个虚拟机时,我发现
    核心负载非常奇怪、不均匀且不稳定。

编辑: 所以我更新了 BIOS,重新安装了 Ubuntu,没有变化。从 ftp.us.debian.org/debian/pool/non-free/i/intel-microcode 更新了我的微码,没有变化。禁用超线程,没有变化。当我启动两个虚拟机时,核心慢慢不同步,过了一会儿,核心 1 达到 100%,核心 2 达到 20%。

编辑: 因此,我尝试使用 Ubuntu 16.10 的新 Linux 内核,原版没有区别。通过禁用 intel_pstate 驱动程序和更改 tlp 配置文件进行了更深入的研究,但都没有成功。这甚至不是让它工作的问题,我只是想知道如何工作。该死的 Linux。

答案1

在 Virtualbox 中,您可以指定要使用多少个处理器核心。默认值为 1。将其设置为 2 可使 VM 运行得更好。将其设置得更高通常不利于主机性能。

要解决微码消息,请在 Synaptic 中单击 RELOAD 图标,然后单击 SEARCH 图标,输入intel-microcode,标记唯一的安装结果,然后单击 APPLY 图标。退出 Synaptic。重新启动计算机。

要查看它是否真的有效,请在终端中输入dmesg|grep microcode

干杯,艾尔

答案2

您需要英特尔微码版本 3.20160714.1。微码 0x7c 和 0x84 是坏的垃圾(可能不是每个特定的 Skylake 处理器型号,但我们没有从英特尔获得足够的数据来了解)。即您需要微码修订版 0x9d/0x9e 或更高版本。

无论如何,如果您幸运的话,微码 0x9d 或更新版本可能有助于解决 vmware 崩溃问题。如果您运气不好,至少它可以避免进一步的麻烦。

即使使用最新的微代码,您的处理器仍可能决定为一个核心分配更多的热空间,或者您的 BIOS 可能会告诉它这样做。

确保您的 BIOS/UEFI 设置为“全/最大性能”,并且没有启用任何试图最大化单核性能的选项(也可以尝试“平衡模式”以防万一)。如果这还不够,您可以安装 linux-tools-common 软件包的一个版本,并尝试使用 x86_energy_perf_policy 将处理器启动到性能模式。

不幸的是,我不知道哪个 Linux 实用程序可以让您查询处理器以了解它是否由于 TDP 或功率限制而自我节流。

相关内容