WIN7 下能不能限制某个程序使用的 CPU 核心数

2014-11-30 00:44:13 +08:00
 Mac
打某款上古老网游,差不多快8年了,很显然程序没做过优化,在4核8线程状态下切回桌面再切回去会卡屏幕。2核4线程就秒回。

WIN7有没有软件可以针对特定的程序限制CPU数?每次开任务管理器人工设很麻烦的说。
8559 次点击
所在节点    问与答
13 条回复
hjc4869
2014-11-30 01:04:11 +08:00
貌似win8任务管理器里可以,右键进程的某个菜单。win7忘记了,好久没用。

不对这个好像XP就可以了吧…
hjc4869
2014-11-30 01:05:52 +08:00
好吧抱歉没仔细看最后一句话……
这样的需求可以写个程序调。
不知道batch批处理行不行。
Joan
2014-11-30 03:14:39 +08:00
windwos 任务管理器
选中进程
右键
处理器相关性
Joan
2014-11-30 03:15:29 +08:00
是 设置相关性
Mac
2014-11-30 04:03:11 +08:00
@Joan 这个我知道啊,我只是不想每次运行这个程序都来设一遍啊,有没有一劳永逸的办法?
vibbow
2014-11-30 04:19:23 +08:00
Process Lasso
hljjhb
2014-11-30 04:23:37 +08:00
@vibbow 正解
Joan
2014-11-30 06:23:32 +08:00
@vibbow +1
kmvan
2014-11-30 11:01:46 +08:00
Process Lasso 我一直在用,老机器双核,把不常用的进程挊成最低级亲和性,感觉系统响应稍微快了一点,不知道是不是心理作用。不过心理作用也是快,那就满足了。
ScotGu
2014-11-30 11:10:16 +08:00
WIN7 任务管理器 找到程序的进程 设置相关性 想限制几核就勾选几个。
ScotGu
2014-11-30 12:19:20 +08:00
@ScotGu 抱歉,最后一句话 同样被我无视了, 我一直认为在任务管理器里限制核心数是持久的。。
Mac
2014-11-30 12:22:33 +08:00
@hljjhb 神器,多谢,现在终于可以在闲置的时候出来浏览网页做做自己的事情了。
ruoyu0088
2014-11-30 16:06:05 +08:00
用start命令:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMA
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]

"title" 在窗口标题栏中显示的标题。
path 启动目录。
B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。
除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
该应用程序的方式。
I 新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。

MIN 以最小化方式启动窗口。
MAX 以最大化方式启动窗口。
SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。
SHARED 在共享内存空间中启动 16 位 Windows 程序。
LOW 在 IDLE 优先级类中启动应用程序。
NORMAL 在 NORMAL 优先级类中启动应用程序。
HIGH 在 HIGH 优先级类中启动应用程序。
REALTIME 在 REALTIME 优先级类中启动应用程序。
ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
NODE 将首选非一致性内存结构 (NUMA) 节点指定为十进制整数。
AFFINITY 将处理器关联掩码指定为十六进制数字。进程被限制在这些
处理器上运行。

当 /AFFINITY 和 /NODE 结合时,会对关联掩码进行不同的解
指定关联掩码,正如 NUMA 节点的处理器掩码正确移动到零位
起始位置一样。进程被限制在指定关联掩码和 NUMA 节点之间
那些通用处理器上运行。如果没有通用处理器,则进程被限制
指定的 NUMA 节点上运行。
WAIT 启动应用程序并等待它终止。
command/program
如果它是内部 cmd 命令或批文件,则该命令处理器是使用
cmd.exe 的 /K 开关运行的。这表示运行该命令之后,该窗口
将仍然存在。

如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将
作为一个窗口化应用程序或控制台应用程序运行。

parameters 这些是传递给 command/program 的参数。

注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。

通过指定 /NODE,可按照利用 NUMA 系统中的内存区域的方式创建进程。例如,
可以创建两个完全通过共享内存互相通信的进程以共享相同的首选 NUMA 节点,
从而最大限度地减少内存延迟。如有可能,它们即会分配来自相同 NUMA 节点的
内存,并且会在指定节点之外的处理器上自由运行。

启动 /NODE 1 application1.exe
启动 /NODE 1 application2.exe

这两个进程可被进一步限制在相同 NUMA 节点内的指定处理器上运行。在以下
示例中, application1 在节点的两个低顺序处理器上运行,而 application2
在该节点的其后两个处理器上运行。该示例假定指定节点至少具有四个逻辑
处理器。请注意,节点号可更改为该计算机的任何有效节点号,而无需更改关联
掩码。

启动 /NODE 1 /AFFINITY 0x3 application1.exe
启动 /NODE 1 /AFFINITY 0xc application2.exe

如果命令扩展被启用,通过命令行或 START 命令的外部命令
调用会如下改变:

将文件名作为命令键入,非可执行文件可以通过文件关联调用。
(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。
关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和
FTYPE 命令。

执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用
程序终止就返回命令提示符。如果在命令脚本内执行,该新行为
则不会发生。

如果执行的命令行的第一个符号是不带扩展名或路径修饰符的
字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这
防止从当前目录提取 CMD.EXE。

如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用
PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展
名。PATHEXT 变量的默认值是:

.COM;.EXE;.BAT;.CMD

请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。

查找可执行文件时,如果没有相配的扩展名,看一看该名称是否
与目录名相配。如果确实如此,START 会在那个路径上调用
Explorer。如果从命令行执行,则等同于对那个路径作 CD /D。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150338

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX