为什么你需要特别了解每个处理器?

时间:2012-03-11 02:47:37

标签: process multiprocessing windows-8 taskmanager affinity

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

这是截图(来自here):

Windows 8 task manager

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

processor affinity

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

一种可能的情况是运行多个虚拟机的服务器,每个客户端都在付费以访问其虚拟机。

管理员可以设置处理器的亲和力,以便每个VM都能保证访问X个核心(并且会对客户端进行适当的充电)。

现在,假设管理员注意到分配给ABC公司的VM的核心在热图上注册了很多。这将是向ABC公司追加销售并让他们支付更多核心费用的绝佳机会。

管理员和ABC公司都获胜 - 管理员赚更多钱,ABC公司体验更好。

通过这种方式,热图可以作为决策支持系统,帮助ABC公司决定他们的需求是否需要更多核心,并帮助管理员更好地将他们的广告定位到可以从中受益的客户。