请选择 进入手机版 | 继续访问电脑版

死性不改BBS - 网维行业自由、中立的技术与信息交流平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 万能包 GHO
绝地求生(外服)公告 | 绝地求生(腾讯)公告英雄联盟-官网公告 | 官方论坛 | 服务器状态穿越火线-官网公告 | 官方论坛地下城与勇士-官网公告 | 官方论坛
查看: 2013|回复: 16

[原创] 【教程】如何限制客户机进程的CPU利用率?

[复制链接]

36

主题

732

帖子

0

精华

级别:管理员

人气
50
精华
0
金币
1585
经验
5631
注册时间
2017-5-24

优秀会员宣传达人突出贡献优秀版主

QQ
发表于 2019-9-19 10:06:17 | 显示全部楼层 |阅读模式

别装深沉了,赶快来凑凑热闹吧!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
论坛看到有人问这个问题,CLXP论坛这里总结下送给有用的人,大家也可以参与讨论下你的方法.
我能想到的大概有下面三个方法:
1、设置CPU亲和性,缺点是最大CPU利用率上限为CPU核心数的单个百分百,比如四核CPU,设置亲和性为单核心,则最大利用率为100/4*100=25%,八核设置了亲和性为单核心,则最大利用率为 100/8*100=12.5%  ;

2、获得进程里面占用CPU时间较多的线程,对该线程进行挂起和恢复操作;

3、设置进程优先级为“低”,这个不会抢占CPU资源了,效果还是不错的,CMD或bat里面执行下面语句可将“calc.exe”进程优先级设置为最低:
  1. wmic process where name='calc.exe' call SetPriority 64
复制代码
输入参数:

优先级 -  sint32
        
       限定符:CIMTYPE,描述,ID,in,MappingStrings,ValueMap,Values
      
       Priority参数指定进程的新优先级。价值观:
       空闲 - 为线程仅在系统空闲时运行的进程指定。进程的线程被更高优先级的类中运行的任何进程的线程抢占。一个例子是屏幕保护程序。空进优先级类由子进程继承。
       低于正常 - 表示优先级高于IDLE_PRIORITY_CLASS但低于NORMAL_PRIORITY_CLASS的进程。对于Windows 2000。
       正常 - 为没有特殊调度需求的进程指定。
       高于正常 - 表示优先级高于NORMAL_PRIORITY_CLASS但低于HIGH_PRIORITY_CLASS的进程。对于Windows 2000。
       高优先级 - 为执行必须立即执行的时间关键任务的进程指定。进程的线程抢占正常或空闲优先级进程的线程。一个例子是任务列表,无论操作系统上的负载如何,它都必须在用户调用时快速响应。使用高优先级类时要特别小心,因为高优先级类应用程序几乎可以使用所有可用的CPU时间。
       实时 - 为具有最高优先级的进程指定。进程的线程抢占所有其他进程的线程,包括执行重要任务的操作系统进程。例如,执行时间超过非常短暂间隔的实时进程可能导致磁盘缓存不刷新或导致鼠标无响应。
      
      
       可能的枚举值:
       0x00000040  - 空闲
       0x00004000  - 低于正常值
       0x00000020  - 正常
       0x00008000  - 高于正常值
       0x00000080  - 高优先级
       0x00000100  - 实时

总结:
建议方法1和方法3一起使用,但如果不进行编程,则较麻烦。好在微软的 sysinternalssuite 套件里面提供了这么一个小工具:PsExec,该工具用于以特定参数或设置去执行一个程序。详细方法请到下载地址查看,下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
查看使用方法,我们得知:
实现方法1的参数为 -a
实现方法3的参数为 -priority
那么我们执行 iexplore.exe,限制它以及它的子进程只能使用第一个CPU核心、且进程优先级为低,命令如下(可在CMD或BAT中执行):
  1. C:\Users\admin\Desktop\PsExec.exe /accepteula -d -low -a 0 "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
复制代码

效果图:
2019-09-19_10h10_49.png
2019-09-19_10h11_58.png

Windows系统下常用的 Start 命令也支持同样的参数去执行程序:
  1. start ""  /LOW /AFFINITY 0x1 "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
复制代码
其中的 /LOW 表示低优先级,/AFFINITY 参数为指定CPU核心,该值计算比较麻烦,感兴趣的可在CMD中输入 start /? 自行了解.


编程实现:
设置CPU亲和性(指定核心):
SetProcessAffinityMask() https://docs.microsoft.com/zh-cn ... processaffinitymask
设置进程优先级:
SetPriorityClass() https://docs.microsoft.com/zh-cn ... redirectedfrom=MSDN
以上两个方法在执行后,是实时生效的。

www.clxp.net.cn 原创发布,转载请保留此信息.




评分

参与人数 1金币 +10 人气 +1 收起 理由
smallhorse + 10 + 1 感谢分享,论坛因你而精彩!

查看全部评分

维护大师5000人官方交流群1:485305618
维护大师5000人官方交流群2:814403705

18

主题

261

帖子

0

精华

级别:初中

人气
0
精华
0
金币
48
经验
2043
注册时间
2018-10-28
发表于 2019-9-19 10:18:54 | 显示全部楼层
厉害厉害              
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

0

主题

78

帖子

0

精华

级别:高中

人气
0
精华
0
金币
64
经验
3249
注册时间
2015-12-28
发表于 2019-9-19 13:46:04 | 显示全部楼层
Windows10之前的系统也就只能这样了,Windows10倒是有对应的API
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

1

主题

45

帖子

0

精华

级别:初中

人气
0
精华
0
金币
44
经验
1316
注册时间
2015-12-15
发表于 2019-9-19 13:50:38 | 显示全部楼层
66666666666666666666
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

4

主题

45

帖子

0

精华

级别:小学

人气
0
精华
0
金币
48
经验
827
注册时间
2016-5-19
发表于 2019-9-19 14:17:08 | 显示全部楼层
问个比较蠢得问题。pubg i5-7500得cpu 。玩绝地求生得时候cpu占用100% 一到100%整个系统就卡。能不能使用这个方法把pubg 进程限制在整体80%cpu 左右。
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

4

主题

45

帖子

0

精华

级别:小学

人气
0
精华
0
金币
48
经验
827
注册时间
2016-5-19
发表于 2019-9-19 14:21:53 | 显示全部楼层
C:\Users\admin\Desktop\PsExec.exe /accepteula -d -low -a 0,1,2 "C:\Program Files (x86)\Internet Explorer\iexplore.exe" 大佬,这样四核就占用75% 对吗?

点评

正解  发表于 2019-9-19 14:30
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

36

主题

732

帖子

0

精华

级别:管理员

人气
50
精华
0
金币
1585
经验
5631
注册时间
2017-5-24

优秀会员宣传达人突出贡献优秀版主

QQ
 楼主| 发表于 2019-9-19 15:00:12 | 显示全部楼层
imcolen 发表于 2019-9-19 14:17
问个比较蠢得问题。pubg i5-7500得cpu 。玩绝地求生得时候cpu占用100% 一到100%整个系统就卡。能不能使用这 ...

这个需要你自己测试有没有异常问题,并且需要以 PsExec 去执行pubg或pubg的父进程,如果是从steam启动PUBG,那应该是以 PsExec 去执行steam,这样pubg的进程才能继承CPU亲和性和进程优先级的设置。
维护大师5000人官方交流群1:485305618
维护大师5000人官方交流群2:814403705

4

主题

56

帖子

0

精华

级别:初中

人气
0
精华
0
金币
84
经验
1462
注册时间
2016-11-10
发表于 2019-9-19 17:20:39 | 显示全部楼层
如果没问题的时候以扯牛B为主,当遇到问题的时候99%会以懵B为主!
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

20

主题

423

帖子

0

精华

级别:高中

人气
4
精华
0
金币
79
经验
5035
注册时间
2016-11-20
发表于 2019-9-19 21:18:44 | 显示全部楼层
先收藏  以后需要用 再研究一下
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

4

主题

1037

帖子

0

精华

级别:高中

人气
1
精华
0
金币
1145
经验
3610
注册时间
2018-10-27
QQ
发表于 2019-9-20 00:03:08 | 显示全部楼层
非常好的内容,转载一下,已经标注来源和特别鸣谢维护大师技术A
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

6

主题

231

帖子

0

精华

级别:初中

人气
0
精华
0
金币
35
经验
2296
注册时间
2017-7-15
QQ
发表于 2019-9-20 00:12:24 | 显示全部楼层
感谢分享,收藏了
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

14

主题

178

帖子

0

精华

级别:高中

人气
3
精华
0
金币
31
经验
2939
注册时间
2015-12-21

论坛元老

发表于 2019-9-24 00:31:56 | 显示全部楼层
学习,谢谢维护大师技术A
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

35

主题

192

帖子

0

精华

级别:初中

人气
15
精华
0
金币
1049
经验
2154
注册时间
2016-1-8
发表于 2019-9-25 16:56:03 | 显示全部楼层
能不能限制游戏进程使用利用率了
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

3

主题

46

帖子

0

精华

级别:初中

人气
0
精华
0
金币
47
经验
1817
注册时间
2016-1-15
发表于 2019-9-26 09:38:37 | 显示全部楼层
先收藏,这个确实很好思路。感谢技术大佬
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]

37

主题

99

帖子

0

精华

级别:初中

人气
4
精华
0
金币
1
经验
1279
注册时间
2015-12-22
发表于 2019-9-28 12:43:10 | 显示全部楼层
原创发布,转载请保留此信息
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧!

[这是默认签名,更换签名点这里!]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|死性不改BBS - 网维行业自由、中立的技术与信息交流平台 ( 浙ICP备14029261号 )

浙公网安备 33010302001723号

GMT+8, 2019-12-6 13:26 , Processed in 0.127127 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表