如何限制客户机进程的CPU利用率?解决吃鸡卡顿 <p>最近看到有人问这个问题,如何限制客户机进程的CPU利用率?从而解决因某个进程占用CPU 100%,引起电脑卡顿。下面我们来讨论解决方法.<br>可供参考的大概有下面三种方法:<br>1、设置CPU亲和性,缺点是最大CPU利用率上限为CPU核心数的单个百分百,比如四核CPU,设置亲和性为单核心,则最大利用率为100/4*100=25%,八核设置了亲和性为单核心,则最大利用率为 100/8*100=12.5% ;<br><br>2、获得进程里面占用CPU时间较多的线程,对该线程进行挂起和恢复操作;<br><br>3、设置进程优先级为“低”,这个不会抢占CPU资源了,效果还是不错的,CMD或bat里面执行下面语句可将“TslGame.exe”进程优先级设置为最低:<br>wmic process where name='TslGame.exe' call SetPriority 64<br>输入参数:<br>优先级 - sint32<br> 限定符:CIMTYPE,描述,ID,in,MappingStrings,ValueMap,Values<br> Priority参数指定进程的新优先级。价值观:<br> 空闲 - 为线程仅在系统空闲时运行的进程指定。进程的线程被更高优先级的类中运行的任何进程的线程抢占。一个例子是屏幕保护程序。空进优先级类由子进程继承。<br> 低于正常 - 表示优先级高于IDLE_PRIORITY_CLASS但低于NORMAL_PRIORITY_CLASS的进程。对于s 2000。<br> 正常 - 为没有特殊调度需求的进程指定。<br> 高于正常 - 表示优先级高于NORMAL_PRIORITY_CLASS但低于HIGH_PRIORITY_CLASS的进程。对于s 2000。<br> 高优先级 - 为执行必须立即执行的时间关键任务的进程指定。进程的线程抢占正常或空闲优先级进程的线程。一个例子是任务列表,无论操作系统上的负载如何,它都必须在用户调用时快速响应。使用高优先级类时要特别小心,因为高优先级类应用程序几乎可以使用所有可用的CPU时间。<br> 实时 - 为具有最高优先级的进程指定。进程的线程抢占所有其他进程的线程,包括执行重要任务的操作系统进程。例如,执行时间超过非常短暂间隔的实时进程可能导致磁盘缓存不刷新或导致鼠标无响应。<br> 可能的枚举值:<br> 0x00000040 - 空闲<br> 0x00004000 - 低于正常值<br> 0x00000020 - 正常<br> 0x00008000 - 高于正常值<br> 0x00000080 - 高优先级<br> 0x00000100 - 实时<br>总结:<br>建议方法1和方法3一起使用,但如果不进行编程,则较麻烦。好在微软的 sysinternalssuite 套件里面提供了这么一个小工具:PsExec,该工具用于以特定参数或设置去执行一个程序。PsExec工具可以在网盘下载>>>精品软件收集</p><p><a href="http://qq2118491062.ys168.com" target="_blank" class="link"><i class="iconfont icon-iconfontlink"> </i>http://qq2118491062.ys168.com</a><br>查看使用方法,我们得知:<br>实现方法1的参数为 -a<br>实现方法3的参数为 -priority<br>那么我们执行 iexplore.exe,限制它以及它的子进程只能使用第一个CPU核心、且进程优先级为低,命令如下(可在CMD或BAT中执行):<br>C:\Users\admin\Desktop\PsExec.exe /accepteula -d -low -a 0 "E:\mystream\PUBG\steamapps\common\PUBG\TslGame\Binaries\Win64\TslGame.exe"<br>编程实现:<br>设置CPU亲和性(指定核心):<br>SetProcessAffinityMask() </p><p><a href="https://docs.microsoft.com/zh-cn/s/win32/api/winbase/nf-winbase-setprocessaffinitymask" target="_blank" class="link"><i class="iconfont icon-iconfontlink"> </i>https://docs.microsoft.com/zh-cn ... processaffinitymask</a><br>设置进程优先级:<br><a href="https://docs.microsoft.com/zh-cn/s/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass?redirectedfrom=MSDN" target="_blank" class="link"><i class="iconfont icon-iconfontlink"> </i>SetPriorityClass() https://docs.microsoft.com/zh-cn ... redirectedfrom=MSDN</a><br>以上两个方法在执行后,是实时生效的。<br>其他例子:</p><p>PsExec.exe /accepteula -d -low -a 0,1,2 "E:\mystream\PUBG\steamapps\common\PUBG\TslGame\Binaries\Win64\TslGame.exe" ,这样四核就占用75% </p><p><br></p><p>以上部分内容参照死性不改论坛</p><p>特别鸣谢:死性不改论坛-维护大师技术A<br></p> <p><b>继续阅读精品内容</b></p><p>『一定收藏』网吧技术问题收集整理<br><a href="https://www.meipian.cn/297bxonb" target="_blank" class="link"><i class="iconfont icon-iconfontlink"> </i>https://www.meipian.cn/297bxonb</a><br>※※网吧常用软件快速开通<br><a href="https://www.meipian.cn/29jwaxxd" target="_blank" class="link"><i class="iconfont icon-iconfontlink"> </i>https://www.meipian.cn/29jwaxxd</a><br></p>