Программно ограничить использование процессора любым приложением в Windows 7? - PullRequest
7 голосов
/ 06 мая 2010

Я ищу способ ограничить использование процессора любым приложением в Windows 7 до 50%. Я попытался найти в Интернете способ сделать это, и похоже, что это легко сделать в Linux и Mac OS X (одна команда в терминале), но я не уверен, как это сделать в Windows 7. Любая помощь будет высоко ценится. Спасибо!

Rohan

Ответы [ 5 ]

6 голосов
/ 18 ноября 2010

Вы можете использовать BES. Когда задан вопрос, он подавляет приложения, загруженные процессором. Вы можете ограничить максимум 3 программы. Я использую это, чтобы запустить несколько клиентов онлайн-игр, и это работает как очарование для меня. Вы должны запустить его с правами администратора и в режиме совместимости с Windows XP SP3. Чтобы настроить эти параметры, щелкните правой кнопкой мыши исполняемый файл и выберите параметры.

Вот ссылка на BES - ограничитель процессора.

4 голосов
/ 13 октября 2011

Если вы используете многоядерный процессор, вы можете щелкнуть правой кнопкой мыши по процессу в диспетчере задач и установить привязку. Это определит, какие ядра могут запускать процесс. Снимите флажок с половины ядер, и процесс будет использовать 50%.

Или посмотрите, чтобы сделать это программно: Установите соответствие с помощью команды start / AFFINITY в Windows 7

3 голосов
/ 03 мая 2013

Вы можете ограничить использование ЦП вашего процесса или любого другого процесса, добавив интересующий процесс к объекту Job и наложив ограничения на объект Job.

Одним из ограничений ресурсов, которые можно настроить для объектов Job, является загрузка ЦП:

Если вам нужно использовать JOBOBJECT_BASIC_LIMIT_INFORMATION, обратите особое внимание на примечание:

Чтобы зарегистрироваться для уведомления о превышении этого лимита без завершения процессов, используйте функцию SetInformationJobObject с информационным классом JobObjectNotificationLimitInformation

А затем используйте JOBOBJECT_END_OF_JOB_TIME_INFORMATION вместо этого, так как это доступно до Windows 8.

3 голосов
/ 06 мая 2010

Нельзя ограничить использование ЦП процессом в Windows 7 или более ранней версии, поскольку этот ресурс управляется ОС *.

Однако вы можете указать запуск процесса с определенным приоритетом, например, бежать ниже обычного приоритета. Различные приоритеты планирования могут быть установлены с помощью API-функции SetPriorityClass.

Приоритеты планирования

Что вы, вероятно, пытаетесь предотвратить, так это то, что ваш процесс влияет на производительность системы так, как это заметил бы пользователь. В этом случае установление соответствующих приоритетов будет решением. В конце концов, у вас дорогой процессор , так почему бы не использовать его, когда вы можете ?

* См. @ ответ Бена Фойгта для возможного решения для Windows 8 и выше.

1 голос
/ 27 сентября 2011

Вы можете использовать отличную программу под названием " process lasso ".

В lasso вы можете, например, ограничить какую-то конкретную программу 1 ЦП и низким приоритетом.Каждая копия этой программы будет работать с этими настройками.Я использовал эту программу для управления процессором на терминальном сервере, и она работала очень хорошо!

...