现在,大多数Windows PC都由多核处理器提供支持,并且Windows的最新版本通常在自动分配PC的总处理能力方面表现出色,可以最好地适应正在运行的应用程序和游戏。 但是有时,在决定如何最好地使用PC的CPU功能方面,用户和Windows可能会有不同的想法,这是高级用户可以通过此功能介入并手动将某些应用程序或进程限制为特定的CPU内核的地方。称为 Processor Affinity 。 这是操作方法。
对于Windows的消费者级别版本,用户手动配置应用对特定CPU内核的使用的能力可以追溯到Windows XP / 2000的时间范围,尽管每个Windows版本的步骤略有不同。 对于步骤和屏幕截图,我们使用Windows 10,但是运行Windows较旧版本(尤其是Windows 7和Windows 8 / 8.1)的读者应该能够遵循基本步骤,而与Windows UI略有不同。
同样重要的是,在继续进行操作之前,请注意修改处理器对特定进程或应用程序的亲和力可能会导致稳定性问题,并且可能会降低现代多线程应用程序和游戏的性能。 因此,请确保首先尝试使用非关键性应用程序和数据,并确保在修改此处讨论的任何设置之前保存所有未完成的工作或游戏进度,因为这可能会导致应用程序或系统崩溃。
为什么要限制应用程序对CPU内核的访问?
如上所述,大多数用户都希望Windows自动处理PC的处理能力,并确保可以利用所有内核的应用程序具有访问权限。 通常,这会带来更好的性能,因此主要的问题是, 为什么 用户总是希望将某个多线程应用程序限制或限制为少于PC可用的物理和逻辑核心的总数。
这个问题有两个基本答案:1)确保与较旧软件的兼容性和性能,以及2)运行原本为高线程的处理器,同时仍保留足够的资源来同时执行其他任务。
我们将从第一个答案开始:兼容性和性能。 某些Windows应用程序和游戏在实现消费者级别的多线程和多核处理器之前就已经进行了编码。 特别是旧游戏的创造者可能从未想过有人会玩游戏,而不仅仅是由单个高频CPU内核驱动的Windows PC。 当这个时代的软件遇到封装了四个,六个,八个甚至更多内核的现代CPU时,有时会导致性能问题,甚至根本无法启动该程序。
当然,即使使用最新的8核/ 16线程怪兽台式机CPU供电,许多应用程序和游戏仍然可以正常运行。 但是,如果您尝试玩一个较旧的游戏时遇到问题,则使用处理器亲和力将游戏进程手动限制为多个核心之一,可能是一个很好的故障排除步骤。
对于更多的Windows用户,第二个答案可能更有用,它将构成以下分步说明的基础。 尽管许多Windows应用程序(尤其是游戏)仍无法利用一个或两个以上的内核,但近年来,诸如视频编码器和3D渲染工具之类的内容创建应用程序已经过优化,能够使用每盎司的处理能力您的PC可以扔给他们。 通常,您希望这些应用尽可能快地运行,但有时速度或完成时间不是主要因素,您宁愿将PC的处理能力的一部分留给其他任务使用,而要求苛刻的媒体应用则在背景。 这就是处理器亲和力真正派上用场的地方。
循序渐进:我们的示例
一个可以吞噬掉所有CPU核心的应用是RipBot264之类的x264视频编码器(或HandBrake,或任何可用的多种x264和x265编码器工具)。 对于我们的示例,我们希望RipBot264对视频文件进行编码,但是我们也希望同时在Photoshop和Premiere等应用程序中的其他项目上工作。
默认情况下,像RipBot264这样的应用程序将使用所有可用的处理能力。
如果我们先启动RipBot264编码,然后启动Photoshop和Premiere,则Windows会尽力确定优先级并满足每个应用程序的需求,但是Windows偶尔也会出错,从而导致活动应用程序速度变慢或暂时冻结。 我们可以尝试通过使用处理器亲缘关系来限制RipBot264对CPU内核的使用来避免这种情况。首先,请首先确保您已登录具有admin特权的Windows用户帐户。 然后继续并启动您要限制的应用程序。 在我们的例子中,就是RipBot264。
接下来,通过右键单击任务栏并选择“ 任务管理器”或使用键盘快捷键组合Ctrl-Shift-Escape来启动Windows任务管理器。 默认情况下,Windows的最新版本中的任务管理器在“基本”视图中启动。 如果您的任务管理器与我们的屏幕截图不同,请单击更多详细信息以显示完整的界面。 完成后,请确保您位于“进程”选项卡上,然后找到您的应用程序或进程。
最后一步说起来容易做起来难。 在许多情况下,您只需在列表中找到所需的应用即可。 在其他情况下,某些应用程序可能会使用除主要应用程序过程以外的唯一过程来完成某些任务。 关键是找到与您要限制的CPU使用量有关的一个或多个进程。 测试此问题的一种好方法是启动苛刻的活动(在我们的示例中,开始对视频文件进行编码),然后按“ CPU”列对“任务管理器”进行排序,以查找使用最高CPU资源级别的进程。 如果进程名称(同样,在我们的示例中为H.264编码器进程)与目标应用程序匹配,则说明一切就绪。
确定正确的过程后,右键单击它,然后选择转到详细信息 。 这将使您跳至任务管理器的“详细信息”选项卡,并自动突出显示正确的过程。
现在,再次右键单击该过程,然后选择Set Affinity 。
将出现一个新窗口,标记为“ Processor Affinity”,其中包含复选框和CPU编号列表,其数量取决于特定CPU中包装的物理和逻辑核的总数。 我们的示例系统运行的是Intel Core i7-5960X,它具有八个超线程内核。 因此,在“处理器相似性”窗口中总共列出了16个CPU。
接下来,是时候确定要限制应用程序多少。 单击“ 所有处理器”旁边的复选框以取消选择所有CPU框,然后选择至少一个CPU框进行检查,每个框代表一个物理或逻辑核心。 由于没有任何CPU缺陷或独特的超频情况,因此选择哪个内核通常无关紧要。
在我们的示例中,我们希望将RipBot264限制为四个内核,从而为我们其他对时间更敏感的任务留出足够的空间。 选择所需的内核数量后,请按OK关闭Processor Affinity窗口。 您所做的更改将立即生效,并且如果该应用程序已经在执行CPU繁重的任务,您将看到除所选内核之外的所有内核的处理器使用率均下降。
一旦我们将RipBot264配置为仅使用16个内核中的4个,其余的内核上的CPU使用率就会立即下降。
通过此设置,我们可以让RipBot264在这四个内核上尽可能快地进行编码,但是我们系统中其余的十二个内核可以自由处理其他应用程序。 如果以后要完成其他工作并想将RipBot264的性能恢复到完整状态,我们可以简单地重复上述步骤以返回到“处理器相似性”窗口,然后选中“ 所有处理器”框以再次授予该应用程序对我们所有CPU的访问权限核心。注意事项
除了前面提到的稳定性问题外,您还需要考虑其他一些重大警告。 只要重新启动该进程,对处理器相关性所做的任何更改都会重置。 这意味着,至少在每次重启PC时,您都需要重复这些步骤。 但是,某些过程会更加麻烦,因为它们会根据应用程序的说明自动重新加载。 例如,在我们的RipBot264设置中,每次应用程序继续对新的视频文件进行编码时,我们修改的H.264编码器过程都会重新开始。
您可能可以通过创建自定义脚本来解决此限制,这些自定义脚本可以通过基于命令行的批处理文件或快捷方式来设置应用程序的处理器亲和力,但是某些应用程序可能使用唯一或随机的过程,从而使这种工作变得困难或不可能。 因此,最好对希望限制的每个应用程序单独进行试验,以找到手动配置处理器关联性的最佳方法。