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

Process 为什么您需要特别了解每个处理器?,process,multiprocessing,windows-8,taskmanager,affinity,Process,Multiprocessing,Windows 8,Taskmanager,Affinity,我很想了解Windows8任务管理器关注的每个虚拟处理器的细粒度细节背后的动机 这是一个截图(来自): 我知道这种设置只能存在于非标准、昂贵、重要的服务器环境(1TB RAM!),但热图有什么用呢?或者,设置处理器相关性: 我想问的是,在什么情况下,开发人员会关心特定处理器X的使用是否超过处理器Y(而不是仅仅知道单个非多线程进程正在最大化一个内核,这最好显示为进程热图,而不是处理器热图),或者关心一个进程是否会使用这个或那个处理器(我不能期望人类比自动平衡算法猜得更好)我不能给你一个关于这个

我很想了解Windows8任务管理器关注的每个虚拟处理器的细粒度细节背后的动机

这是一个截图(来自):

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


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

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

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

管理员可以设置处理器亲缘关系,以便每个VM都能保证访问X个内核(并向客户端适当收费)

现在,假设管理员注意到分配给ABC公司VM的内核在热图上高度注册。这将是一个向美国广播公司(ABC Company Inc.)追加销售并让他们支付更多内核费用的绝佳机会

管理员和ABC公司都赢了——管理员赚的钱更多,ABC公司的业绩也更好


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

在大多数情况下,这无关紧要,热图只不过看起来很酷而已

不过,大型服务器是不同的。一些处理器具有“NUMA”或非统一内存访问体系结构。在这些情况下,一些处理器内核能够比其他内核更快地访问某些内存块。在这些情况下,调整进程相关性以使进程保持在具有更快内存访问的内核上可能是有用的。此外,如果处理器具有单核缓存(正如许多处理器一样),那么如果线程从一个核跳到另一个核,可能会有性能代价。Windows调度器应该能够很好地避免这样的切换,但我可以想象在一些奇怪的工作负载中,您可能需要强制执行它


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

我同意它看起来超级棒(至少在许多虚拟处理器上):)那么,Word崩溃仅仅是因为它是多线程?真奇怪,那将是我最不愿意去的地方(我希望他们能彻底测试一下)。找到它一定很痛苦!好吧,单核上可能也是多线程的,但是有两个真正的核来多线程可以实现更多单核上不可能实现的竞态条件,并使其他竞态条件更容易发生。竞态条件一直困扰着我。.NET多线程中的好东西是如此简单,或者至少我认为C++必须非常困难,不知道NUMA。这是否意味着某些处理器可以更快地访问更大的内存块,或者所有处理器都有自己的“快速内存块”?此外,通过任务管理器GUI(而不是通过基准测试/测试/服务器进程代码)设置关联也不会被实际使用,对吗?NUMA通常意味着访问某些内存比访问其他内存慢。Windows还有其他获取NUMA数据的功能,因此我相信大多数必须扩展到该级别的应用程序都会进行适当的配置。尽管如此,任务管理器的功能仍然很有用。你的答案似乎很全面,我看到它在任务管理器中的存在只是看起来很酷。没有其他理由特别去那里,对吗?我接受你的回答,因为我认为没有任何真正的理由,而你实际上说了一些我不知道的事情(NUMA)。这看起来像是一个场景,但仍然,我认为托管公司会使用日志和一些第三方分析软件,甚至仅仅是脚本来了解(从数量上来说)机器的状态和使用历史,对吧?这是可能的,当然,如果一个免费的操作系统集成工具可以实现同样的功能,为什么还要为昂贵的第三方分析软件付费呢?因为我不认为有管理员一直在关注任务管理器,所以我想如果没有第三方解决方案是经济高效的,可能会使用脚本。另外,我假设ABC公司没有物理访问他们的虚拟机所在的服务器的权限,也无法访问任务管理器。据我所知,以前版本的windows具有相同的功能,只是没有像这样炫耀它们;看看Chrome的统计数据。@CodyGray LOL,这是真的。此外,铬:直方图。(顺便说一下,对于任何好奇的人来说:chrome:stats只有在运行chromew时才会显示。)