以编程方式限制Windows 7上任何应用程序的CPU使用率?

时间:2010-05-05 22:09:32

标签: windows-7 cpu-usage

我正在寻找一种方法来限制Windows 7上任何应用程序的CPU使用率达到50%。我已经尝试在互联网上寻找一种方法来实现这一点,看起来这在Linux和Mac OS X(终端中的一个命令)上做起来很容易,但我不确定如何在Windows上执行此操作7.非常感谢任何帮助。谢谢!

罗汉

5 个答案:

答案 0 :(得分:6)

您可以使用BES。 当被问及时,它会限制CPU耗尽的应用程序。 您最多可以限制3个程序。 我使用它来运行多个在线游戏客户端,它对我来说就像一个魅力。 您应该使用admin privilidges和windows xp sp3兼容模式运行它。 要调整这些设置,请右键单击可执行文件并选择选项。

Here's the link for BES - CPU limiter.

答案 1 :(得分:4)

如果您使用的是多核处理器,则可以右键单击任务管理器中的进程并设置关联。这将定义允许哪些核心运行该进程。取消选中一半核心,该过程将使用50%。

或者看看这是以编程方式进行的:Set affinity with start /AFFINITY command on Windows 7

答案 2 :(得分:3)

您无法限制Windows 7或更早版本上的进程的CPU使用率,因为此资源由OS * 管理。

但是,您可以指定运行具有特定优先级的流程,例如运行低于正常优先级。可以使用SetPriorityClass API函数设置各种调度优先级。

  

<强> Scheduling Priorities

您可能试图阻止的是您的过程以用户会注意到的方式影响系统的性能。在这种情况下,设置适当的优先级将是一个解决方案。毕竟,你有一个expensive CPU so why not use it whenever you can

* 有关Windows 8及更高版本的可能解决方案,请参阅@Ben Voigt's answer

答案 3 :(得分:3)

您可以通过向Job对象添加感兴趣的进程并对Job对象设置限制来限制进程或任何其他进程的CPU使用率。

可以为Job对象配置的资源限制之一是CPU使用率:

如果您必须使用JOBOBJECT_BASIC_LIMIT_INFORMATION,请注意注释:

  

要在超过此限制时注册通知而不终止进程,请使用带有JobObjectNotificationLimitInformation信息类的SetInformationJobObject函数

然后使用JOBOBJECT_END_OF_JOB_TIME_INFORMATION代替,因为它在Windows 8之前可用。

答案 4 :(得分:1)

您可以使用名为“process lasso”的优秀程序。

在套索中,您可以将某些特定程序限制为1个CPU和低优先级。该程序的每个副本都将使用这些设置运行。我用这个程序来管理终端服务器上的CPU,它运行得很好!