在单独的核心中运行 Windows 进程

在单独的核心中运行 Windows 进程

我有一台 AMD FX-6200 (3.8GHz,六核),我想通过以下方式对其进行优化:

  • 核心 1:仅由关键 Windows 进程使用,例如 explorer.exe、svchost.exe、rundll32.exe 等。
  • 核心 2:仅由经常启动/停止的次要 Windows 进程使用,例如 cmd.exe/powershell.exe、taskmgr.exe/procexp.exe 等等。
  • 核心 3:仅供未针对多核进行优化的 CPU 密集型用户应用程序使用。
  • 核心 4:由用户应用程序使用。(默认)
  • 核心 5:由用户应用程序使用。(默认)
  • 核心 6:由用户应用程序使用。(默认)

我这样做的原因之一是 Windows 通常会将 CPU 负载均匀地分布在所有处理器上,但是当您运行 CPU 占用高的单线程进程时,它的运行速度通常会比应有的速度慢得多,这仅仅是因为它运行的核心的 20% 已经被其他进程占用,而 Windows 似乎无法在运行时有效地将这些进程移动到其他核心。

我知道如何在 Process Explorer 中设置处理器亲和性,但 a) 这不是永久性的,b) 您无法为未知进程设置默认值,c) 对于无数的 Windows 后台进程来说,这确实不是一个选项。我基本上是在寻找一种解决方案,让操作系统自动使用核心 1,而用户应用程序默认使用核心 4/5/6,我可以提前指定将某些进程分别移动到核心 2 或 3。这样的事情可能吗?

我正在运行 64 位 Windows Server 2008 R2 Datacenter,但它是 Windows 7 内核,因此适用于 Windows 7 的解决方案也可能适用。


编辑:有一个名为的 Microsoft 工具互联网信息服务它被描述为 Web 服务器,但似乎具有与设置应用程序池的处理器亲和性相关的功能。有没有人有使用过此 IIS 的经验,可以告诉我它是否(以及如何)可以用于我的目的?

答案1

我不相信有内置解决方案。据我所知,甚至没有永久的第三方解决方案。程序可以随时指定处理器亲和性。因此,即使操作系统确实移动了某个进程,该进程也可以自行移回。

答案2

尝试这个解决方案:

c:\windows\system32\cmd.exe /C 启动/affinity 1 mstsc.exe

相关内容