Как привязать процесс к ядру windows 10

Когда программа работает в Windows 10, она использует процессор. Большинство компьютеров имеют многоядерный процессор. Любая запускаемая вами программа

Содержание

  1. Что такое сходство процессоров и как установить сходство процессоров в Windows 10
  2. Что такое сходство процессоров в Windows 10
  3. Как установить сходство процессов в Windows 10
  4. Диспетчер задач задать соответствие что это?
  5. Как я могу постоянно устанавливать сходство процесса?
  6. 3 ответов
  7. Вадим Стеркин
  8. 1. Определите двоичное число
  9. 2. Конвертируйте двоичное число в шестнадцатеричное
  10. 3. Сформируйте команду для ярлыка
  11. Настройка Processor Affinity с помощью PowerShell

Что такое сходство процессоров и как установить сходство процессоров в Windows 10

Когда программа работает в Windows 10, она использует процессор. Большинство компьютеров имеют многоядерный процессор. Любая запускаемая вами программа использует все ядра ЦП. Проще говоря, ОС Windows решает, как использовать ядра для любой программы. Тем не менее, можно настроить программы на использование только одного или двух ядер вместо всех ядер. В этом посте мы объясним, что такое Processor Affinity и как установить Processor Affinity для любой программы в Windows 10.

Что такое сходство процессоров в Windows 10

lazy placeholder

Процессор Affinity полезен, если у вас тяжелая программа, такая как рендеринг видео. Когда вы выделяете ядро ​​для программы редактирования видео, оно гарантирует, что ядро ​​процессора всегда выделено для выполнения задачи. Это повышает производительность, поскольку уменьшает проблему с кешем, поскольку нет задержки с выделенным ядром.

Однако это также означает, что программа не может использовать любое другое ядро, которое влияет на балансировку нагрузки.

Обычно Windows 10 уравновешивает нагрузку на процессор, распределяя несколько потоков по нескольким ядрам процессора. Поэтому, если вы не уверены в том, что делаете, мы настоятельно рекомендуем вам запускать программы с настройками по умолчанию.

Как установить сходство процессов в Windows 10

В Windows 10 пользователь с правами администратора может указать, какие ядра процесс может использовать при каждом запуске. Вот как это сделать.

После этого ваша программа будет использовать не только это ядро ​​процессора.

Я бы порекомендовал вам следить за тем, как работает программа, если она замедляется, лучше всего назначить больше ядер для использования всех ядер.

Процессор Affinity в Windows 10 должен использоваться профессиональными пользователями. Измените его, только если вы знаете, что и для чего вы делаете.

Источник

Диспетчер задач задать соответствие что это?

Вообще как бы функция хорошая, если бы не одно но. В процессорах Intel, как и у AMD, есть не только ядра, но и потоки. Поток как бы слабее ядра. Но Windows определяет потоки как ядра и разницы между ними не видит. Я не знаю, но может быть как-то можно определить в диспетчере где ядро, а где поток, но.. я лично не знаю как это сделать.

Так, ладно, пошли в диспетчер. Вот например есть программа AnVir Task Manager и я хочу разрешить этой программе использовать только 1 ядро, так как всего у меня в процессоре — 2 (кстати у меня Pentium G3220). Нажимаю правой кнопкой по AnVir Task Manager и выбираю Подробно:

181015051855

Открылась вкладка Подробности, на которой выделен процесс AnVir.exe, это и есть процесс программы. Нажимаю по нему правой кнопкой и выбираю пункт Задать сходство:

181015052005

Появится окошко Соответствие процессоров:

181015052114

Теперь смотрите, тут стоят галочка. Каждый пункт — это ядро (ну или поток). В моем случае чтобы программа могла использовать только одно ядро, то мне нужно оставить только одну галочку, я сниму с ЦП 0 и оставлю только ЦП 1:

181015052356

Нажали ОК и все — теперь программа работает на одном ядре. В работе программы вы можете ничего не заметить, если программа немного использует ресурсов или если у вас мощный топовый процессор с высокой частотой. Но вообще полезно — например могут быть программы, которые ну очень много хотят ресурсов, и таким способом можно им утихомирить аппетит так бы сказать.

Вот и все ребята. Надеюсь что информация кому-то пригодилась. Удачи и до новых встреч!

Источник

Как я могу постоянно устанавливать сходство процесса?

У меня есть игра, которая имеет проблемы с использованием процессора, так что одно из исправлений, чтобы отключить одно ядро из четырехъядерного процессора. Поскольку каждый раз, когда я запускаю игру, мне приходится вручную входить в Диспетчер задач и вручную вводить affinity, что отстой, так как игра недавно выпущена, но склонна к частым сбоям.

есть не программное решение?

Я посмотрел некоторые решения в интернете, и они, кажется, ориентированы только на Windows 7. Есть ли решение для Пользователи Windows 8.1, как я?

3 ответов

можно создать ярлык для назначения сходства.

Y является шестнадцатеричным и является битовой маской:

если под «не программным обеспечением» вы имеете в виду не требующее дополнительного программного обеспечения, есть. Вы можете запустить программу из командного сценария и использовать affinity switch «Start /AFFINITY 20 process.exe»

для тех, кто ищет ответы на этот вопрос и не находит, решение, которое я нашел, было использовать приложение под названием WinAFC (или AffinityChanger). Это частичный графический интерфейс, частичное приложение командной строки, которая позволяет указать профили для некоторых исполняемых файлов, и будет опрашивать список процессов для них. Если он находит совпадающие процессы, он изменит сходство этих процессов в соответствии с настройками в загруженном профиле.

для моих целей, я создал профиль, который выглядел вот так:

этот профиль устанавливает любые преобразования.exe процесс использовать первые две пары ядра процессора (CPU0, CPU1, CPU2 и CPU3), опрос каждую секунду. TestMode это переключатель, который позволяет вам видеть, работает ли ваш профиль, фактически не устанавливая сходства.

Источник

Вадим Стеркин

Узнал о возможности задавать соответствие процессам, на нагрузку одного или нескольких ядер процессора. А вот чтобы этот параметр закрепить за *.exe файлом, такого нигде нет (за исключением использования сторонней программы, но это не вариант). В итоге приходится постоянно при загрузке задавать соответствие этому процессу. Может есть способ через ярлык или реестр указать, сколько ядер разрешено использовать тому или иному процессу?

Windows вполне эффективно управляет сходством процесса, поэтому менять это следует только в том случае, если в этом есть насущная необходимость, т.е. вы четко понимаете, что вы делаете и что это дает.

Для формирования ярлыка нужно знать шестнадцатеричное число, определяющее комбинацию желаемых процессоров.

1. Определите двоичное число

В диспетчере задач щелкните правой кнопкой мыши на процессе → Задать сходство.
Появится диалог со списком ЦП. Допустим, их 8 — от ЦП0 до ЦП7.

affinity1

Выбранные ЦП обозначаются двоичным числом, в котором столько цифр, сколько у вас ЦП. Выбранные ЦП обозначаются единицами, не выбранные — нулями. Самая правая цифра — ЦП0, самая левая — ЦП7.

При стандартном запуске (картинка выше) выбраны все ЦП, поэтому число состоит из восьми единиц: 11111111. Если вы хотите только ЦП1 и ЦП4, число будет 00010010.

affinity0

2. Конвертируйте двоичное число в шестнадцатеричное

Соответствующее шестнадцатеричное число — HEX. В данном случае — 12.

affinity2

3. Сформируйте команду для ярлыка

Используйте команду start, чтобы указать шестнадцатеричное число в качестве значения для ключа /affinity

В Windows XP команда start не поддерживает ключ /affinity. В этом случае надо использовать утилиту psexec с ключом /a из набора Systinternals PSTools.

Источник

Настройка Processor Affinity с помощью PowerShell

По умолчанию запущенное в Windows приложение может выполняться на любом из ядер процессора, а распределением процессорных мощностей занимается операционная система. Обычно она неплохо справляется с этой задачей, но иногда все же требуется ручная настройка. Для этой цели в Windows есть функционал Processor Affinity, который позволяет осуществлять привязку вычислительных процессов к ядрам процессора.

При помощи этого функционала можно указать сходство (affinity) процесса с определенными ядрами процессора, тем самым привязав процесс к этим ядрам. Если вы установили для процесса привязку к определенным ядрам, то он будет выполняться только на этих ядрах.

В какой ситуации может потребоваться настройка Processor Affinity:

• Для ограничения потребления ресурсов конкретным приложением. Самый простой и эффективный, хотя и достаточно грубый способ ограничить для приложения потребляемую процессорную мощность.
• Для обеспечения совместимости. К примеру требуется запустить устаревшее приложение, которое работает некорректно в многопроцессорной системе.
• Для повышения производительности. В случае с ресурсоемкими приложениями (напр. рендеринг видео) иногда рекомендуют выделить программе отдельные ядра процессора. Это гарантирует, что ядра будут всегда доступны для выполнения задачи и не будет задержек, связанных с выбором и переключением между ядрами.

Проще всего осуществить привязку с помощью диспетчера задач (Task Manager). Для этого надо на вкладке Details (Подробности) найти нужный процесс, кликнуть на нем правой клавишей мыши и в контекстном меню выбрать пункт Set Affinity (Задать сходство).

affinity1

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

affinity2

Можно осуществлять привязку и с помощью PowerShell. Для примера запустим Блокнот (notepad) и выведем его текущее значение командой:

Get-Process notepad | fl ProcessorAffinity

affinity3

А теперь давайте разберемся, откуда взялась цифра 15. Дело в том, что ProcessorAffinity представляет из себя битовую маску (bitmask), где каждому биту соответствует ядро процессора. Если для ядра отмечено сходство (affinity), то бит выставляется в 1, если нет — то в 0. В нашем случае отмечены все ядра, поэтому маска выглядит так:

CPU3 CPU2 CPU1 CPU0
1 1 1 1

Примечание. При использовании технологии HyperThreading каждое физическое ядро определяется операционной системой как два отдельных процессора (два логических ядра).

Теперь переведем двоичные значения в десятичные и получим:

CPU BitMask Dec
CPU0 0001 1 (2 0 )
CPU1 0010 2 (2 1 )
CPU2 0100 4 (2 2 )
CPU3 1000 8 (2 3 )

Складываем полученные десятичные значения и получаем:

1 + 2 + 4 +8 = 15

Таким образом число 15 означает, что используются все 4 ядра процессора. Если мы хотим это изменить и привязать процесс к определенным ядрам, то складываем только те значения, которые соответствуют этим ядрам. Например, требуется привязать процесс к первым трем ядрам, соответственно значение будет складываться так:

1 + 2 + 4 = 7

Значение получено, теперь осуществим привязку. Для этого выполним следующие команды:

$process = Get-Process notepad
$process.ProcessorAffinity = 7

affinity4

Проверим результат и в графической оснастке. Как видите, нашему процессу сопоставлены три ядра процессора, как и было задумано 🙂

affinity5

Таким образом можно осуществить привязку уже запущенного процесса, а можно ли запустить процесс сразу с привязкой к определенным ядрам? Можно, с помощью утилиты командной строки start с ключом /affinity. Например, для запуска блокнота с привязкой к первому ядру достаточно выполнить команду:

start /affinity 1 notepad

Эта команда отлично работает в командной консоли, но если вы попытаетесь выполнить ее при помощи PowerShell, то получите ошибку. Дело в том, что в PowerShell команда start является алиасом для командлета Start-Command, для которого указанные параметры являются недопустимыми.

affinity7

Поэтому, если все же требуется запуск именно из PowerShell, то команду придется немного видоизменить. Например так:

affinity8

Указывать значение маски в данном случае надо не в десятичном, а в шестнадцатеричном виде. К примеру десятичное значение 15 в шестнадцатеричном виде будет равно F, а команда для запуска процесса с привязкой к четырем ядрам будет выглядеть так:

affinity9

И еще, если требуется уточнить количество ядер процессора, то это можно сделать с помощью переменной окружения, командой:

Источник

По умолчанию запущенное в Windows приложение может выполняться на любом из ядер процессора, а распределением процессорных мощностей занимается операционная система. Обычно она неплохо справляется с этой задачей, но иногда все же требуется ручная настройка. Для этой цели в Windows есть функционал Processor Affinity, который позволяет осуществлять привязку вычислительных процессов к ядрам процессора.

При помощи этого функционала можно указать сходство (affinity) процесса с определенными ядрами процессора, тем самым привязав процесс к этим ядрам. Если вы установили для процесса привязку к определенным ядрам, то он будет выполняться только на этих ядрах.

В какой ситуации может потребоваться настройка Processor Affinity:

• Для ограничения потребления ресурсов конкретным приложением. Самый простой и эффективный, хотя и достаточно грубый способ ограничить для приложения потребляемую процессорную мощность.
• Для обеспечения совместимости. К примеру требуется запустить устаревшее приложение, которое работает некорректно в многопроцессорной системе.
• Для повышения производительности. В случае с ресурсоемкими приложениями (напр. рендеринг видео) иногда рекомендуют выделить программе отдельные ядра процессора. Это гарантирует, что ядра будут всегда доступны для выполнения задачи и не будет задержек, связанных с выбором и переключением между ядрами.

Проще всего осуществить привязку с помощью диспетчера задач (Task Manager). Для этого надо на вкладке Details (Подробности) найти нужный процесс, кликнуть на нем правой клавишей мыши и в контекстном меню выбрать пункт Set Affinity (Задать сходство).

процессы в Task Manager

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

Processor Affinity в Task Manager

Можно осуществлять привязку и с помощью PowerShell. Для примера запустим Блокнот (notepad) и выведем его текущее значение командой:

Get-Process notepad | fl ProcessorAffinity

Processor Affinity в PowerShell

А теперь давайте разберемся, откуда взялась цифра 15. Дело в том, что ProcessorAffinity представляет из себя битовую маску (bitmask), где каждому биту соответствует ядро процессора. Если для ядра отмечено сходство (affinity), то бит выставляется в 1, если нет — то в 0. В нашем случае отмечены все ядра, поэтому маска выглядит так:

CPU3 CPU2 CPU1 CPU0
1   1   1   1  

Примечание. При использовании технологии HyperThreading каждое физическое ядро определяется операционной системой как два отдельных процессора (два логических ядра).

Теперь переведем двоичные значения в десятичные и получим:

CPU  BitMask Dec
CPU0 0001 1 (20)
CPU1 0010 2 (21)
CPU2 0100 4 (22)
CPU3 1000 8 (23)

Складываем полученные десятичные значения и получаем:

1 + 2 + 4 +8 = 15

Таким образом число 15 означает, что используются все 4 ядра процессора. Если мы хотим это изменить и привязать процесс к определенным ядрам, то складываем только те значения, которые соответствуют этим ядрам. Например, требуется привязать процесс к первым трем ядрам, соответственно значение будет складываться так:

1 + 2 + 4 = 7

Значение получено, теперь осуществим привязку. Для этого выполним следующие команды:

$process = Get-Process notepad
$process.ProcessorAffinity = 7

Изменение Processor Affinity в PowerShell

Проверим результат и в графической оснастке. Как видите, нашему процессу сопоставлены три ядра процессора, как и было задумано 🙂

Processor Affinity в Task Manager

Таким образом можно осуществить привязку уже запущенного процесса, а можно ли запустить процесс сразу с привязкой к определенным ядрам? Можно, с помощью утилиты командной строки start с ключом /affinity. Например, для запуска блокнота с привязкой к первому ядру достаточно выполнить команду:

start /affinity 1 notepad

Эта команда отлично работает в командной консоли, но если вы попытаетесь выполнить ее при помощи PowerShell, то получите ошибку. Дело в том, что в PowerShell команда start является алиасом для командлета Start-Command, для которого указанные параметры являются недопустимыми.

запуск утилиты start в PowerShell

Поэтому, если все же требуется запуск именно из PowerShell, то команду придется немного видоизменить. Например так:

Invoke-Command -ScriptBlock {cmd /c start /affinity 1 notepad}

запуск приложения с заданной привязкой

Указывать значение маски в данном случае надо не в десятичном, а в шестнадцатеричном виде. К примеру десятичное значение 15 в шестнадцатеричном виде будет равно F, а команда для запуска процесса с привязкой к четырем ядрам будет выглядеть так:

Invoke-Command -ScriptBlock {cmd /c start /affinity F notepad}

запуск приложения с заданной привязкой

И еще, если требуется уточнить количество ядер процессора, то это можно сделать с помощью переменной окружения, командой:

$env:NUMBER_OF_PROCESSORS

просмотр количества ядер

Как назначить ядра конкретному приложению

  1. После запуска диспетчера задач выберите «Подробнее» внизу.
  2. Выберите приложение (которое уже запущено), для которого вы хотите назначить ядра.
  3. Щелкните приложение правой кнопкой мыши и выберите Перейти к деталям.
  4. В разделе «Подробности» снова щелкните приложение правой кнопкой мыши и выберите «Установить соответствие».

12 сред. 2015 г.

Как изменить настройки процессора в Windows 10?

Как использовать максимальную мощность процессора в Windows 10

  1. Щелкните правой кнопкой мыши меню «Пуск» и выберите «Панель управления».
  2. Нажмите «Оборудование и звук».
  3. Выберите «Электропитание».
  4. Найдите Управление питанием процессора и откройте меню Минимальное состояние процессора.
  5. Измените настройку для батареи на 100%.
  6. Измените настройку для подключения к сети на 100%.

22 колода 2020 г.

Как сделать программу в Windows 10 приоритетной на постоянной основе?

Следующие шаги могут быть полезны:

  1. Щелкните правой кнопкой мыши на панели задач и выберите «Запустить диспетчер задач».
  2. Перейдите на вкладку «Процессы».
  3. Щелкните правой кнопкой мыши нужный процесс, затем выберите «Установить приоритет» и переключите его на то, что вы хотите.

Как получить больше процессов ЦП?

Настройка использования ядра ЦП

  1. Одновременно нажмите клавиши «Ctrl», «Shift» и «Esc» на клавиатуре, чтобы открыть диспетчер задач.
  2. Щелкните вкладку «Процессы», затем щелкните правой кнопкой мыши программу, для которой необходимо изменить использование ядра ЦП, и выберите «Установить соответствие» во всплывающем меню.

Что делает настройка сходства в диспетчере задач?

5 ответов. Настройка привязки что-то дает, но вы никогда не захотите ее использовать. Установка сродства ЦП заставляет Windows использовать только выбранный ЦП (или ядра). Если вы установите привязку к одному процессору, Windows будет запускать это приложение только на этом процессоре, а не на других.

Должен ли я включать все ядра в Windows 10?

Нет, это не повредит, но не делайте этого, компьютер делает это автоматически, когда необходимо, компьютер сам включит все ядра COU, которые вы не использовали все время … так что лучше держите его как есть, если вы заставите все ядра быть живыми, он будет использовать большая мощность, а также тепловая дроссельная заслонка COU и производительность одного ядра ur будут снижены…

Как управлять ядрами процессора?

Введите «msconfig» в окно поиска Windows и нажмите Enter. Выберите вкладку «Загрузка», а затем «Дополнительные параметры». Установите флажок рядом с «Количество процессоров» и выберите количество ядер, которое вы хотите использовать (возможно, 1, если у вас есть проблемы с совместимостью) из меню. Выберите ОК, а затем Применить.

Как узнать, какое у меня ядро ​​процессора?

Нажмите Ctrl + Shift + Esc, чтобы открыть диспетчер задач. Выберите вкладку «Производительность», чтобы узнать, сколько ядер и логических процессоров у вашего ПК.

Как мне изменить настройки процессора?

Перемещайтесь по меню BIOS с помощью клавиш со стрелками. Найдите настройки процессора в BIOS, затем нажмите «Enter», чтобы открыть их. Настройки процессора могут быть помечены как «Настройки ЦП», «Тактовая частота ЦП» или «Расширенные настройки». Обратитесь к руководству по эксплуатации вашего компьютера, чтобы узнать конкретное имя.

Как увеличить скорость процессора?

Вот семь способов повысить скорость работы компьютера и его общую производительность.

  1. Удалите ненужное программное обеспечение. …
  2. Ограничьте программы при запуске. …
  3. Добавьте больше оперативной памяти на свой компьютер. …
  4. Проверьте наличие шпионского ПО и вирусов. …
  5. Используйте очистку диска и дефрагментацию. …
  6. Рассмотрим стартовый SSD. …
  7. Взгляните на свой веб-браузер.

26 колода 2018 г.

Как мне изменить базовую скорость моего процессора?

Как изменить скорость процессора

  1. Выключи свой компьютер.
  2. Запустите компьютер и при появлении запроса нажмите соответствующую клавишу, чтобы войти в программу настройки BIOS. …
  3. Используйте инструкции по навигации в программе настройки BIOS, чтобы найти параметры управления для FSB (передняя шина) и множителя FSB. …
  4. Измените скорость FSB и / или множитель FSB. …
  5. Измените напряжение процессора.

Повышает ли изменение приоритета производительность?

Неа. Приоритеты не влияют на скорость обработки, так как процесс с более высоким приоритетом не может работать быстрее или даже использовать больше процессорного времени… если только это единственное, что хочет использовать процессор. … Процессы не «запускаются» в Windows. Потоки, которые являются частью процессов, — это то, что запускается.

Почему я не могу изменить приоритет в диспетчере задач?

Убедитесь, что администраторы имеют полный контроль

Найдите процесс, приоритет которого вы хотите изменить. Щелкните процесс правой кнопкой мыши и выберите «Свойства». Перейдите на вкладку «Безопасность» и нажмите «Изменить». Выберите «Администраторы» и установите флажок «Полный доступ» в поле «Разрешить сейчас», нажмите «Применить» и «ОК», чтобы сохранить изменения.

В чем разница между высоким приоритетом и приоритетом реального времени?

Режим реального времени — это класс наивысшего приоритета, доступный процессу. Следовательно, он отличается от «Высокого» тем, что он на одну ступень больше, а «Выше нормального» — на два шага выше. Точно так же режим реального времени также является уровнем приоритета потока.

Как сделать, чтобы программа использовала для работы определенное ядро процессора

Выбрать ядро процессораРаспределение ядер процессора для выполнения определенной программы может оказаться полезным, если у на Вашем компьютере присутствует ресурсоемкое приложение, которое нельзя выключить, и которое при этом мешает нормальной работе за компьютером. Например, выделив антивирусу Касперского одно ядро процессора для работы, мы можем, пусть незначительно, но ускорить игру и FPS в ней. С другой стороны, если у вас компьютер сильно тормозит, это не тот, метод, который Вам поможет. Нужно искать причины, см: Тормозит компьютер

Назначение логических процессоров определенной программе в Windows 7 и Windows 8

Указанные функции работают в Windows 7, Windows 8 и Windows Vista. О последней я не говорю, так как ее мало кто использует у нас в стране.

Запустите Диспетчер Задач Windows и:

  • В Windows 7 откройте вкладку «Процессы»
  • В Windows 8 откройте «Подробности»

Выбрать соответствие процессора

Кликните правой клавишей мыши по интересующему Вас процессу и выберите в контекстном меню пункт «Задать сходство». Появится окно «Соответствие процессоров», в котором Вы можете указать, какими ядрами процессора (или, вернее, логическими процессорами) программе разрешено пользоваться.

Выбор логических процессоров для выполнения программы

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

Как запустить программу на определенном ядре процессора (логическом процессоре)

В Windows 8 и Windows 7 имеется также возможность запустить приложение так, чтобы сразу после запуска оно использовало определенные логические процессоры. Для того, чтобы сделать это, запуск приложения нужно осуществлять с указанием соответствия в параметрах. Например:

c:windowssystem32cmd.exe /C start /affinity 1 software.exe

В этом примере будет запущено приложение software.exe с использованием 0-го (ЦП 0) логического процессора. Т.е. цифра после affinity указывает номер логического процессора + 1. Эту же команду Вы можете записать в ярлык приложения, чтобы оно всегда запускалось с использованием определенного логического процессора. К сожалению, мне не удалось найти информации, как передать параметр таким образом, чтобы приложение использовало не один логический процессор, а сразу несколько.

UPD: нашел как запустить приложение на нескольких логических процессорах с помощью параметра affinity. Указываем маску в шестнадцатеричном формате, например требуется использовать процессоры 1, 3, 5, 7, соответственно, это будет 10101010 или 0xAA, передаем в виде /affinity 0xAA.

Использование процессора в Windows 8

По умолчанию в Windows запущенное приложение может выполняться на любом из ядер CPU. Распределением процессов между ядрами управляет операционная система. Однако вы можете вручную привязать определенные процессы к ядрам процессора с помощью Processor Affinity. В этой статье мы покажем, как вручную привязать программу/процесса к определенным ядрам.

Чаще всего ручная привязка процессу к ядрам нужна, когда:

  • Вы хотите ограничить использование ресурсов CPU для определенного приложения;
  • Некоторые legacy приложения могут некорректно работать в многоядерной архитектуре;
  • Вы хотите повысить производительность ресурсоемкого приложения, выделив программе отдельные ядра CPU. Благодаря этому можно гарантировать доступность ядер для вашего процесса и уменьшить задержки, связанные с выбором и переключением между процессами.

Задать ядра CPU для приложения с помощью Task Manager

Вы можете вручную привязать процесс к определенным ядрам с помощью Task Manager.

  1. Запустите Taskmgr.exe и перейдите на вкладку Details;
  2. Найдите нужный процесс, щелкните по нему правой клавишей и выберите Set Affinity; task manager выбрать set afinity
  3. В открывшемся окне появится список ядер процессора. По умолчанию процесс может выполняться на любом из ядер CPU;
  4. Вы можете оставить включенными только те ядра, на которых должен выполняться ваш процесс. привязка процессов windows к ядрам CPU

В утилите Process Explorer вы можете также назначить ядра CPU для любого процесса. Щелкните по любому процессу и выберите Set Affinity.

Process-Explorer привязать процесс к ядру

Настройка Processor Affinity с помощью PowerShell

Вы можете управлять привязками процессам к ядрам с помощью PowerShell. Например, чтобы отобрать привязку процесса pwsh.exe к CPU, выполите такую команду PowerShell:

Get-Process pwsh | fl ProcessorAffinity

ProcessorAffinity : 63

Что означает число 63? Значение ProcessorAffinity это битовая маска, где каждому биту соответствует номер ядра процессора.

Получить количество ядер CPU на компьютере можно из переменной окружения:

$env:NUMBER_OF_PROCESSORS

ProcessorAffinity в powershell

В текущем компьютере доступно 6 ядер (если процессор поддерживает HyperThreading, то каждое ядро процессора будет считаться двумя логическими ядрам).

В нашем случае битовая маска для ProcessorAffinity получилась так:

CPU Decimal   (2*decimal-1) Hex
CPU0 1 (20) 1 1
CPU1 2 (21) 3 2
CPU2 4 (22) 7 4
CPU3 8 (23) 15 8
CPU4 16 (24) 31 10
CPU5 32 (2)5 63 20
CPU6 64 (2)6 127 40
CPU7 128 (2)7 255 80

1+2+4+8+16+32=63

Это означает, что для процесса доступны все 6 ядра.

Если вы хотите разрешить процессу использовать только 0 и 3 ядра, значение ProcessorAffinity нужно задать 9 (1+8)

Чтобы задать привязку ядер для процесса с помощью PowerShell, выполните команду:

$process = Get-Process pwsh
$process.ProcessorAffinity = 9

Если вы указали некорректно значение, команда вернет ошибку:

SetValueInvocationException: Exception setting "ProcessorAffinity": "The parameter is incorrect."

Проверьте текущие настройки процесса в Task Manager:

powershell привязка процессов

Если вам нужно сразу запустить процесс с привязкой к определенным ядрам, используйте такую команду:

Invoke-Command -ScriptBlock {cmd /c start /affinity 1 pwsh.exe}

Ярлык для запуска программы на одном ядре CPU

Для корректной работы некоторых устаревших приложений нужно, чтобы оно работато на первом ядре CPU.

Для запуска программы на CPU0 нужно выполнить такую команду:

cmd.exe /C start /affinity 1 myapp.exe

В данном примере в параметре affinity мы указали 1.  Это значение ProcessorAffinity, которое указывает что программа будет всегда выполняться на первом ядре.

Выполните команду и проверьте, что процесс выполняется на CPU0.

запуск программы на одном ядре процессора

В командной строке значение affinity задается в шестнадцатеричном режиме. Проще всего посчитать значение с помощью калькулятора в режиме Programmer.

Например:

1 (CPU0) + 2 (CPU1) +8 (CPU3) + 20 (CPU5) = 2B

hex калькулятор

Команда для запуска программы с привязкой к 4 ядрам:

cmd.exe /C start /affinity 2b pwsh.exe

Проверьте, что процесс привязан к указанным четырем ядрам.

привязать программу к ядрам

Вы можете сразу увеличить приоритет процесса с помощью параметра /High:

cmd.exe /C start /high /affinity 1 myapp.exe

Другие возможные значение приоритета процесса: /low | /normal | /high | /realtime | /abovenormal | /belownormal  

Если вам нужно постоянно запускать программу на одном ядре, можете создать на рабочем столе ярлык с параметрами:

cmd.exe /c start "Acrobat DC" /affinity 1 "C:Program FilesAdobeAcrobat DCAcrobatAcrobat.exe"

создать ярлык для запуска программы с привязкой к cpu

Если вы хотите изменить иконку ярлыка, нажмите кнопку Change Icon и укажте полный путь к исполняемому exe файлу целевого приложения. Выберите из ресурсов иконку, которая вам нравится.

сменить иконку ярлыка

Теперь, пользователю достаточно дважды щелкнуть по ярлыку, чтобы запустить приложение на одном ядре.

Некоторые приложениях Microsoft позволяют задать CPU Affinyty в настройках:

Понравилась статья? Поделить с друзьями:
  • Как привязать программу к монитору windows 10
  • Как примонтировать папку как диск windows
  • Как привязать принтер к ноутбуку без диска на windows
  • Как примонтировать windows диск в linux
  • Как примонтировать vhd в windows 10