Как сделать, чтобы программа использовала для работы определенное ядро процессора
Распределение ядер процессора для выполнения определенной программы может оказаться полезным, если у на Вашем компьютере присутствует ресурсоемкое приложение, которое нельзя выключить, и которое при этом мешает нормальной работе за компьютером. Например, выделив антивирусу Касперского одно ядро процессора для работы, мы можем, пусть незначительно, но ускорить игру и FPS в ней. С другой стороны, если у вас компьютер сильно тормозит, это не тот, метод, который Вам поможет. Нужно искать причины, см: Тормозит компьютер
Назначение логических процессоров определенной программе в Windows 7 и Windows 8
Указанные функции работают в Windows 7, Windows 8 и Windows Vista. О последней я не говорю, так как ее мало кто использует у нас в стране.
Запустите Диспетчер Задач Windows и:
- В Windows 7 откройте вкладку «Процессы»
- В Windows 8 откройте «Подробности»
Кликните правой клавишей мыши по интересующему Вас процессу и выберите в контекстном меню пункт «Задать сходство». Появится окно «Соответствие процессоров», в котором Вы можете указать, какими ядрами процессора (или, вернее, логическими процессорами) программе разрешено пользоваться.
Вот и все, теперь процесс использует только те логические процессоры, которые ему разрешили. Правда происходит это ровно до следующего его запуска.
Как запустить программу на определенном ядре процессора (логическом процессоре)
В Windows 8 и Windows 7 имеется также возможность запустить приложение так, чтобы сразу после запуска оно использовало определенные логические процессоры. Для того, чтобы сделать это, запуск приложения нужно осуществлять с указанием соответствия в параметрах. Например:
c:\windows\system32\cmd.exe /C start /affinity 1 software.exe
В этом примере будет запущено приложение software.exe с использованием 0-го (ЦП 0) логического процессора. Т.е. цифра после affinity указывает номер логического процессора + 1. Эту же команду Вы можете записать в ярлык приложения, чтобы оно всегда запускалось с использованием определенного логического процессора. К сожалению, мне не удалось найти информации, как передать параметр таким образом, чтобы приложение использовало не один логический процессор, а сразу несколько.
UPD: нашел как запустить приложение на нескольких логических процессорах с помощью параметра affinity. Указываем маску в шестнадцатеричном формате, например требуется использовать процессоры 1, 3, 5, 7, соответственно, это будет 10101010 или 0xAA, передаем в виде /affinity 0xAA.
frenor
Все годно, спасибо огромное, однако 1 вопрос, неужели винда научилась вызывать файлы без прописывания пути, или я чего-то не понимаю?
Ответить
Dmitry
Для Windows можно определить конкретные папки (а есть определенные по умолчанию, после установки), для запуска программ из которых полный путь не нужен.
Ответить
LRA
Думал, что я хозяин компьютера, но. Диспетчер задач выдал окно:
Не удалось получить доступ или установить принадлежность процесса.
Операция не может быть завершена.
Отказано в доступе.
Ответить
Dmitry
Хозяин компьютера вы, не переживайте. Просто некоторые процессы запускают своего рода виртуальные пользователи, типа Система, TrustedInstaller, которые имеют прав больше ваших по умолчанию.
Ответить
Николай
а можно по подробней, как сделать этот шестнадцатеричный формат ? спасибо!
Ответить
Dmitry
Николай. Например, у нас 4 логических процессора.
Все выключены:
0000
Используется только первый:
1000
Используется только второй:
0100
И т.д.
Далее это двоичное значение конвертируем в шестнадцатеричное. Это могут делать калькулятор в Windows 10 в режиме «программист», по-моему и в 7-ке можно было (но сейчас не могу посмотреть как), а можно вот так:
в гугл введите (нули вначале двоичного значения убираем)
bin двоичное_значение to hex, например bin 100 to hex (для второго случая)
Первый же результат поиска будет вести на сайт, который в пунке Hexademical покажет шестнадцатеричное значение. Перед ни пишем 0x (как в примере в статье)
Ответить
Сергей
значения affinity —
1 CPU0
2 CPU1
3 CPU0+CPU1
4 CPU2
5 CPU0+CPU2
6 CPU1+CPU2
7 CPU0+CPU1+CPU2
8 CPU3
9 CPU0+CPU3
0A CPU1+CPU3
0B CPU0+CPU1+CPU3
0C CPU2+CPU3
0D CPU0+CPU2+CPU3
0E CPU1+CPU2+CPU3
0F CPU0+CPU1+CPU2+CPU3
Ответить
Илья
А если я хочу 6 ядер пустить на один процесс, а на второй софт — два других ядра?
CPU0+CPU1+CPU2+CPU3+CPU4+CPU5
CPU6+CPU7 ???
Ответить
semen
Dmitry, а как назначить программе 43 ядра?
Пардон, просмотрел: 43 из 48. Хочу убедится, что прав (83FF FFFF FFFF)?
С уважением. Анатолий.
Ответить
Dmitry
первые 43 из 48 ядер? у меня получается ffff ffff ffe0
Но могу ошибаться. И вообще что это за оборудование такое? (сдается мне на нем должны быть иные средства управления распределением нагрузки по ядрам).
Ответить
Сергей
Все правильно ffff ffff ffe0. Вы забыли указать, что бинарное значение надо вбивать учитывая, что нумерация идет с конца — 1,2,4 ядро — 1011, т.е. первая единица — четвертое «включенное» ядро, потом ноль — 3-е «выключенное» и соответственно 1 и 2 ядрам присвоена единичка («включены»)
Ответить
Руслан
У меня не работает на Windows 8.1. Вроде как запускается сначала cmd на мгновение а потом запускается приложение. Но оно все равно работает на одном процессоре.
Ответить
Dmitry
Руслан, это может быть ограничение самого приложения: не все они могут работать на нескольких CPU
Ответить
Alex
Спасибо. Полезная вещь насчет командной строки. А то забодался уже лазить в диспетчер и отключать второе ядро. Иначе игра вылетает : )
Ответить
Vlad
Добрый день
Это не игровой сайт, но может вы поможете разобраться,ибо решения данной проблемы в инете просто нет (кроме одного совета), а я в компах-ЧАЙНИК)
Проблема: Любая устанавливаемая версия FIFA-неестественно быстрая, т.е. все игроки двигаются с сумасшедшей скоростью, как минимум в 3 раза быстрее, чем должны (как при перемотке видео). Как на Windows 7 Pro x64 так и на Windows 10 Pro 64 (обе-лицензии).
Комплектующие ПК- совместимы между собой и отвечают системным требованиям игр + установлено все дополнительное ПО-Direxct X и д.р. Драйвера видеокарт-последней версии (устанавливал все предыдущие версии на обеих-не помогает) термопаста как в видеокарте gtx 550-ti (gtx 1080-новая и на ней тоже самое) так и на процессоре качественная и заменена правильно.
Такая проблема только с FIFA-остальные игры и сами ОС работают великолепно.
Единственный совет, который я нашел-это запускать игру на 1 ядре процессора. У меня i7 6700K
Из-за чего вообще возникает моя проблема? Поможет ли совет?
Извините за целый рассказ
Ответить
Dmitry
Здравствуйте.
Не могу ответить. Сам поискал еще и у американцев на тему — но ничего такого не описывают. При этом игра не зависима от скорости процессора, по идее (давно уже таких не делают). Так что какой-то глюк, а вот как помочь — не знаю.
Ответить
Алексей
Слышал, что это происходит когда у процессора непостоянная частота (в простое маленькая, а при нагрузке увеличивается) При запуске игра определяет маленькую частоту, потом процессор разгоняется… Можно в биосе отключить, хотя это неудобно.
Ответить
Илья
А как быть если у меня 2 физических процессора по 12 ядер? Нигде не могу найти мануала
Ответить
Dmitry
Возможно пробовать все то же самое, с расчетом на 24 логических процессора. Правда гарантий я тут не даю никаких, экспериментировать только.
Ответить
Дмитрий
Доброго! Уже потихоньку начинает глаз дергаться.
Win7 x64 pro, i5-2500k — соответственно 4 ядра. Создаю батник в папке с нужной прогой, которая должна работать на 3 и 4 ядрах, т.е. в bin 1100 -> hex 0x0C:
start /affinity C program.exe -параметры запуска — получаю привязку к последнему по списку ядру. Ладно, думаю, я криво посчитал и решил проверить, привязав к первому ядру /affinity 1 — при запуске опять на 4-ом ядре! В общем, как я не старался, каменный цветок не вышел. Может быть важно, приложение написано под х64.
Ответить
Dmitry
А может оно просто не может работать многопоточно?
Ответить
яя
ребята помогите, кто умеет это считать у меня проц 5650 надо для каждого ядра отдельно, а их там 12 запускать прогу
какие значения писать для 1,2 и т.д. 12
Ответить
Vlad
Здравствуйте я немогу понять что я должен писать в ярлык приложения что бы оно всегда запускалось с 1 ядром. В ярлыке у меня есть уже прописано это : C:\Users\Home\Desktop\Server-Test\Unturned.exe -nographics -batchmode +secureserver/ServerClass. Что я должен прописать что бы запускалось на 1 ядре
Ответить
Dmitry
По идее вот так (но не уверен):
Ответить
kriptopsix
можно конкретней что должно быть в поле обьект и рабочая папки ярлыка чтоб запустить игру в 1 процессоре? Пробовал в поле обьект C:\Windows\System32\cmd.exe /C start /affinity 1 «F:\игры+\Gta -Vice City (НЕ УДАЛЯТЬ!!!!)\gta-vc.exe» и поле рабочая папка «F:\игры+\Gta -Vice City (НЕ УДАЛЯТЬ!!!!)»
не запускается
Ответить
adda
Все круто, но есть вопрос: есть ли способ чтобы какая то игра запускалась например со всеми ядрами кроме 1 (ВСЕГДА, не производя эти танцы с бубнами в диспетчере задач каждый раз)? Заранее спасибо.
Ответить
Dmitry
Здравствуйте.
Можно.
cmd.exe /c start /affinity ЯДРА игра.exe
Ядра указываются следующим образом, например, у нас 8 ядер, и нужно использовать все, кроме первого, получаем двоичное:
01111111
конвертеры в HEX (шестнадцатеричную) нам покажут либо 0x7F либо просто 7F, используем второй вариант.
В результате потребуется команда (или ярлык, где запускаем cmd.exe и передаем ему все параметры:
cmd.exe /c start /affinity 7F игра.exe
Ответить
Алексей
Другая проблема, количество ядер устанавливается, но через пару минут сбрасывается по умолчанию — на все ядра
Ответить
Вуди
а что делать если у меня банально нет строки «ЗАДАТЬ СХОДСТВО»!!?((
Ответить
Dmitry
Если вы в Windows 10 или 11, перейдите на вкладку «Подробности» или «Сведения» соответственно в диспетчере задач. Ну и не проверял, но может еще быть, что без прав администратора пункта не будет.
Ответить
миша
как сделать на винде 10?
Ответить