如何在Windows XP上为可执行文件设置处理器亲和性?

10

我有一个四核系统,安装了第三方应用程序,偶尔会运行多个进程(总是相同的可执行文件,但它的几个实例),并占用100%的CPU时间。我还在同一台机器上运行了几个Web服务(IIS和第三方服务)。

所有核心都繁忙的问题在于,它使这个第三方Web服务器超时(尽管IIS工作正常,但速度比平时慢)。我对第三方Web服务器没有任何控制权,它是更大产品的一部分,必须保持运行状态。因此,我尝试通过SysInternals Process Explorer调整处理器亲和力,并将那些讨厌的进程限制在4个核中的3个核上,将第4个核专用于第三方Web服务器,看起来效果还不错。

问题在于,它只设置正在运行的进程的亲和力,而不是在可执行级别上,因此在这些进程结束后再次重生为新进程时,情况仍然如此——它们占用了所有4个核心。因此,我搜索了一下微软的ImageCfg.exe实用程序,但我找不到它的下载地址,我发现有些人尝试过它,并抱怨它并没有真正起作用。

有办法使亲和力固定在可执行文件上吗?


1
你应该首先联系相关软件的发布者,询问如何限制线程使用。 - NotMe
然而,这个问题仍然是有趣的,因为软件可能没有这个功能。而且肯定存在其他的软件没有这个功能...每次都要打电话给供应商真的很烦人。 - ine
8个回答

6

http://waynes-world-it.blogspot.com/2009/06/processor-affinity-on-windows-server.html

PowerShell

使用PowerShell为一个或多个正在运行的进程设置处理器亲和性。下面是一个示例脚本,将calc.exe的处理器掩码设置为前4个处理器。我喜欢这种方法,因为脚本简单易懂,易于调度,适用于x86和x64,支持同名的多个进程,至少部分原因是因为它突出了使用PowerShell进行管理是多么容易。

请注意,如果您在calc.exe中使用大数的阶乘(n!),将会生成100%的CPU,这对于测试非常有用。下面的掩码为0xf = 1111-只允许使用前四个处理器的掩码:

$calcSet = Get-Process -ProcessName "calc"
foreach ($calc in $calcSet) {$calc.ProcessorAffinity=0xF}

5

Process Lasso的一个功能是在进程启动时设置其亲和性。


4

您可能需要查看/AFFINITY参数来启动。

从帮助中得知:

AFFINITY    The new application will have the specified processor
            affinity mask, expressed as a hexadecimal number.

作为Windows上的处理器亲和力掩码,您可能需要进行一些实验,但我认为1是第一个核心,因此7是前三个核心,F是所有四个核心。或者8仅为第四个核心。
然后,您可以使用适当的参数用start替换计划任务或快捷方式的调用。

2
Windows XP 没有 /affinity 选项。 - Michał Górny

4

ImageCfg.exe工具是有效的。我今天刚使用它解决了公司的一个问题。它可以从http://www.robpol86.com/pages/imagecfg.php获取。

例如,Imagecfg -a 0x3 xxx.exe将限制.exe在CPU0和CPU1上运行。


3

1
真的要好好阅读这个文档。你很容易在这个问题上自己给自己挖坑,有很多需要注意的地方。 - i_am_jorf

3

1

显然,这个帖子已经过时了,但我还是要添加一条评论,以防万一有人在这个主题上搜索(就像我一样)

您可以尝试设置进程的优先级,以便即使它决定使用100%的CPU,也可以在需要时接管更高优先级的任务。

自动执行此操作(而不必在任务管理器中操作)是我之前提出的问题。

可以使用start命令设置进程的启动优先级。

例如:start "my path\my process" /LOW表示低优先级。

允许的优先级开关为 LOW,NORMAL,HIGH,REALTIME,ABOVENORMAL,BELOWNORMAL

例如,可以从批处理文件中调用。


1
问题是关于处理器亲和性,而非进程优先级。 - aled

0
你可以尝试设置进程的优先级,这样即使它决定使用100%的CPU,当更高优先级的任务需要执行时,它也会被取代。 自动完成此操作(而不是在任务管理器中手动操作)是我之前询问过的事情。

1
问题是关于处理器亲和性,而不是进程优先级。 - aled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接