3

我很想知道 Windows 8 任务管理器似乎关注的每个虚拟处理器的细粒度细节背后的动机是什么。

这是一个屏幕截图(来自这里):

                Windows 8 任务管理器

我知道这种设置只能存在于非标准、昂贵、重要的服务器环境(1TB RAM!)中,但是热图有什么用呢?或者,设置处理器亲和性:

        处理器亲和性

我要问的是,在什么情况下开发人员会关心特定处理器 X 的使用量是否超过处理器 Y(而不是仅仅知道单个非多线程进程正在最大化一个内核,这将更好地显示为进程热图,而不是处理器热图),或者关心进程是否会使用这个或那个处理器(我不能指望人类比自动平衡算法更好地猜测)?

4

3 回答 3

3

在大多数情况下,这并不重要,热图只是看起来很酷。

但是,大型服务器是不同的。一些处理器具有“NUMA”或非统一内存访问架构。在这些情况下,某些处理器内核能够比其他内核更快地访问某些内存块。在这些情况下,调整进程亲和性以使进程保持在具有更快内存访问的内核上可能会很有用。此外,如果处理器具有每个内核的缓存(很多都有),那么如果线程要从一个内核跳转到另一个内核,则可能会产生性能成本。Windows 调度程序应该能很好地避免这样的切换,但我可以想象在一些奇怪的工作负载中你可能需要强制它。

如果您想限制应用程序正在使用的内核数量(例如让其他一些内核空闲用于另一个专用任务),这些设置也可能很有用。如果您正在运行压力测试并且您正在尝试,它也可能很有用以确定您是否有一个坏的 CPU 内核。它还可以解决 BIOS/固件错误,例如与几年前困扰许多多核 CPU 的高性能计时器相关的错误。

于 2012-03-11T03:01:07.820 回答
2

我不能给你一个很好的热图用例(除了它看起来超级棒),但我可以告诉你一个悲伤的故事,关于我们如何使用 CPU 亲和力来修复某些东西。我们正在自动化一些旧版本的 MS Office 来对 Word 文档进行一些批处理,Word 偶尔会崩溃。经过一段时间的故障排除和绝望后,我们尝试将 Word 进程的亲和性设置为仅一个 CPU 以降低并发性,从而降低出现竞争条件的可能性。有效。Word 停止崩溃。

于 2012-03-11T02:56:06.943 回答
1

一种可能的情况是运行多个虚拟机的服务器,其中每个客户端都需要付费才能访问他们的虚拟机。

管理员可以设置处理器关联性,以便每个 VM 都可以保证访问 X 个内核(并且会适当地向客户端收费)。

现在,假设管理员注意到分配给 ABC Company Inc. 的 VM 的核心在热图上的注册率很高。这将是一个向 ABC Company Inc 追加销售并让他们为更多内核付费的绝佳机会。

管理员和 ABC Company Inc 都赢了 - 管理员赚了更多的钱,而 ABC Company Inc 的表现更好。

通过这种方式,热图可以充当决策支持系统,帮助 ABC Company Inc 确定他们的需求是否值得更多核心,并帮助管理员更好地将广告定位到可能受益的客户。

于 2012-03-11T03:01:01.823 回答