什么是 Windows 优先级和亲和性,它提供了什么优势?

什么是 Windows 优先级和亲和性,它提供了什么优势?

优先级和亲和力(在任务管理器中)到底是什么,它们有什么用途:

在任务管理器中找到

在什么情况下应该/可以使用它们,以及自定义这些设置有哪些好处。

答案1

设置亲和力确实会起到一定作用,但您永远不会想使用它。

设置 CPU 亲和性会强制 Windows 仅使用所选的 CPU(或核心)。如果将亲和性设置为单个 CPU,Windows 将仅在该 CPU 上运行该应用程序,而不会在任何其他 CPU 上运行。

Windows 会自动将运行的应用程序放在最不繁忙的处理器上,因此将其限制在单个 CPU 上并不能让 Windows 完成其工作。即使 CPU/核心 1 正在忙于运行其他应用程序,Windows 也无法运行在 CPU/核心 2 上设置了亲和力的应用程序。

您真正想要这样做的唯一原因是运行在多 CPU/核心系统上无法正常工作的旧应用程序。

答案2

在某些情况下,这是非常有用的功能。假设您有一个多线程应用程序,该应用程序要么处于空闲状态,要么在几分钟内积极地占用每个 CPU 的 100%,进行搜索、构建等。我们将此应用程序称为“eclipse”。

假设您在开发这个应用程序时,您还有一堆其他应用程序,这些应用程序对 CPU 的要求不高,但本质上都是实时应用程序。例如,当您使用 Eclipse 时,它​​会随机启动构建或进行 gwt 编译,同时您还使用计算机播放音乐或在浏览器窗口中进行研究(例如,研究构建问题的原因)。当然,如果您的音乐跳过或浏览器停止响应,您不会死,但这很烦人。

affinity 可以让你把耗 CPU 的应用程序限制在 7/8 个核心上,这样其他所有人都可以保证访问相对未使用的 CPU,而当 Eclipse 正在高速运转时,你不必不断处理计算机上其他一切的可用性卡顿和中断。

答案3

设置亲和性会告诉该进程它被允许在哪些处理器上运行。

虽然对于某些特殊情况非常有用,但普通用户可能不应该乱用它。

例如,如果允许某个进程运行自己的核心,那么它就可以(接近)实时运行,而无需 70 个 Windows 实用程序不断中断并在处理器上进行堆栈交换以获得自己的时间片。在多处理器/多核系统出现之前,Windows 永远无法实现实时应用程序,因为操作系统会不断中断/任务切换应用程序以达到自己的目的。现在,可以通过将实时应用程序隔离在一个处理器上,同时阻止系统中的所有其他应用程序使用该处理器来解决这个问题。这是一个非常小众的话题,但像(真实)飞行模拟器、工厂自动化和控制反馈系统这样的系统都依赖于实时架构才能工作。

处理器密集型应用程序(如虚拟机)可以隔离到自己的核心,这样您就可以使用它们而不会使系统的其余部分陷入缓慢运行。理论上,在支持裸机虚拟机管理程序交互的处理器上运行的虚拟机管理程序可以达到与独立操作系统相同的处理器性能(减去运行主机操作系统所需的处理器)。当然,实际上,即使是在其自己的独立核心/处理器上运行的虚拟机仍需要接受来自主机操作系统的少量开销。

对于处理大量不断变化的数据的应用程序,将应用程序隔离到其自己的处理器(并且可能仍使用多个核心)将减少缓存交换。

较旧的应用程序在分布于多个处理器时会出现故障,可以有效地将其限制在一个核心/处理器上以解决问题。

如果您对特定应用程序进行性能测量,除非您可以隔离该过程,否则几乎不可能在不同系统上获得一致的结果,因为否则您无法控制操作系统为您的应用程序提供多少时间。大多数人都同意测量运行时性能不会产生好的结果,但这些人从未考虑过可以通过使用亲和性来限制操作系统干预(导致结果如此不一致)。

在很多情况下亲和力都至关重要,但如果你不知道它们是什么,那么你可能就不需要它了。

答案4

一个完美的例子就是旧电脑游戏(或其他软件),尤其是当 32 位游戏(应用程序)在现代 64 位计算机上模拟时。通过设置旧游戏的亲和性,将它们限制为仅四个核心,通常可以避免崩溃,以便启动 stubburn 游戏。旧游戏、视频编辑器和硬件加速图形软件或 CAD 软件使用的某些渲染引擎无法理解四个以上的 CPU 核心,并且在启动时会崩溃。

我创建账户不是为了发布这个帖子,要找到我,请谷歌搜索“kieseyhow”

相关内容