Узнал о возможности задавать соответствие процессам, на нагрузку одного или нескольких ядер процессора. А вот чтобы этот параметр закрепить за *.exe файлом, такого нигде нет (за исключением использования сторонней программы, но это не вариант). В итоге приходится постоянно при загрузке задавать соответствие этому процессу. Может есть способ через ярлык или реестр указать, сколько ядер разрешено использовать тому или иному процессу?
- Nostra спросил(а) 8 лет назад
- последняя редакция 8 лет назад
- Войдите для отправки комментариев
Windows вполне эффективно управляет сходством процесса, поэтому менять это следует только в том случае, если в этом есть насущная необходимость, т.е. вы четко понимаете, что вы делаете и что это дает.
Для формирования ярлыка нужно знать шестнадцатеричное число, определяющее комбинацию желаемых процессоров.
1. Определите двоичное число
В диспетчере задач щелкните правой кнопкой мыши на процессе → Задать сходство.
Появится диалог со списком ЦП. Допустим, их 8 — от ЦП0 до ЦП7.
Выбранные ЦП обозначаются двоичным числом, в котором столько цифр, сколько у вас ЦП. Выбранные ЦП обозначаются единицами, не выбранные — нулями. Самая правая цифра — ЦП0, самая левая — ЦП7.
При стандартном запуске (картинка выше) выбраны все ЦП, поэтому число состоит из восьми единиц: 11111111. Если вы хотите только ЦП1 и ЦП4, число будет 00010010.
2. Конвертируйте двоичное число в шестнадцатеричное
- Откройте калькулятор и переведите его в режим программирования.
- Нажмите BIN и вставьте скопированное число.
Соответствующее шестнадцатеричное число — HEX. В данном случае — 12.
Если калькулятор очень сложен, конвертируйте онлайн, например, тут http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html
3. Сформируйте команду для ярлыка
Используйте команду start, чтобы указать шестнадцатеричное число в качестве значения для ключа /affinity
cmd.exe /c start "Notepad ++" /affinity 12 "C:\Program Files (x86)\Notepad++\notepad++.exe"
В Windows XP команда start не поддерживает ключ /affinity. В этом случае надо использовать утилиту psexec с ключом /a из набора Systinternals PSTools.
psexec /a 12 "C:\Program Files (x86)\Notepad++\notepad++.exe"
4. Создайте ярлык
- Щелкните правой кнопкой мыши на рабочем столе и выберите Создать → Ярлык.
- Вставьте сформированную команду.
Дополнительная информация
- Vadim Sterkin ответил(а) 8 лет назад
- последняя редакция 8 лет назад
- Подскажите, эта команда подходит для Windows XP?(у меня XP) Получилось сформировать вот такую команду: cmd.exe /c start «XR_3DA» /affinity 3 «D:\Games\S.T.A.L.K.E.R\bin\XR_3DA.exe» (команда ->2 ядра->путь) В ярлыке получилось: %windir%\system32\cmd.exe /c start «XR_3DA» /affinity 3 «D:\Games\S.T.A.L.K.E.R\bin\XR_3DA.exe» Но ярлык не работает, подскажите, пожалуйста, что не так?
- Я добавил решение для Windows XP. Рекомендую не пользоваться устаревшими неподдерживаемыми системами и всегда указывать ОС, задавая вопрос.
- Спасибо, получилось, но как-то интересно: при запуске ярлыка psexec /a 3 (или «-a 1,2») «D:\Games\S.T.A.L.K.E.R\bin\XR_3DA.exe» (%windir%\system32\psexec.exe /a 3 «D:\Games\S.T.A.L.K.E.R\bin\XR_3DA.exe» -nointro) загружает второе ядро, только при 100% загрузке первого. А если запустить приложение родным ярлыком и установить affinity из диспетчера, то нагрузка распределяется на 1ядро на ~70%-80%, а на 2ядро на ~20%-30% — странно. Каким же образом система задаёт параметр affinity, так, что он более адекватно распределяет нагрузку и где этот параметр временно меняется до завершения приложения. Может у, Вас, есть какие-нибудь идеи, по этому поводу?
- Не интересовался. Курите MSDN или Windows Internals Руссиновича.
- Войдите для отправки комментариев
Сначала войдите.