Перейти к содержимому

Задать сходство в диспетчере задач что это

  • автор:

Как "Задать соответствие" процессу на ядра в Windows?

Как "Задать соответствие" процессу на ядра в Windows?

Как заставить приложение (программу, игру) использовать нужное ядро?

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

В диспетчере задач Windows задать соответствие — это значит сколько выделить на работу той или программы или процесса ядер центрального процессора. Для примера, стоит у меня на компьютере 4-х ядерный процессор и есть какая-то программа (например, такая прожорливая, как Adobe Photoshop), которой я хочу выделить для работы всего 2 ядра. Функция задания соответствия процессу конечно неплохая, но есть у неё один недостаток. Дело в том, что в процессорах от Intel, а также и AMD кроме ядер есть ещё и потоки! Они ядра как бы слабее, но операционная система распознаёт эти потоки, как ядра, не различая между ними разницы. Как определить, где поток, а где там ядро в диспетчере задач неизвестно.

Да именно в диспетчере задач и задаётся соответствие для процесса. Открываем диспетчер задач (я буду показывать на примере Windows 7, но и с 10 вы тоже разберётесь) и для примера хочу пресловутому Adobe выделить побольше ядер. Кликаем правой кнопкой мыши по по процессу и во всплывающем меню жмём на пункт Задать соответствие (для Windows 10 этот пункт называется иначе — Задать сходство).

Появится окошко в котором собственно и задаётся соответствие процессоров. Ставим нужное количество ядер и жмём на ОК. Теперь Adobe Photoshop будет работать на 2-х ядрах.

Стоит отметить, что вы можете и не заметить каких-либо перемен в работе программы, тем более если программа не требовательна к ресурсам или у вас мощный процессор. А для того же Фотошопа это может быть полезно, так в сможете умерить его аппетит на ресурсы!

как задать постоянное сходство в windows 10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

У меня есть игра, которая имеет проблемы с использованием процессора, так что одно из исправлений, чтобы отключить одно ядро из четырехъядерного процессора. Поскольку каждый раз, когда я запускаю игру, мне приходится вручную входить в Диспетчер задач и вручную вводить 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.

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

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

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

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

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 (Задать сходство).

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

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

Get-Process notepad | fl ProcessorAffinity

А теперь давайте разберемся, откуда взялась цифра 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

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

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

start /affinity 1 notepad

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

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

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

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

Жизнь — это движение! А тестирование — это жизнь 🙂

Из этого следует, что если мы эмулируем одноядерную машину с 2 виртуальными ядрами, то нужно включать ЦП0 и ЦП1.

Если включить, например, ЦП0 и ЦП2, то будут использованы два разных «железных» ядра и производительность будет сильно выше.

5 комментариев:

нет нужного мне exe файла в "подробностях"

потому что он не включен

но я не знаю как запустить, мне нужно ограничить до запуска

Можно запустить приложение на нескольких логических процессорах с помощью параметра affinity. Указываем маску в шестнадцатеричном формате, например требуется использовать процессоры 1, 3, 5, 7, соответственно, это будет 10101010 или 0xAA, передаем в виде /affinity 0xAA.
т.е.
c:\windows\system32\cmd.exe /C start /affinity 0xAA software.exe
где software.exe — ваше приложение
если вместо 0xAA — передавать цифру — приложение будет запущено на соответствующем цифре логическом ядре.

c:\windows\system32\cmd.exe /C start /affinity 1 software.exe

Обо мне

Моя фотография Ольга Назина (Киселева) Уже более 12 лет как тестировщик 🙂
Автор портала Testbase — школы начинающих тестировщиков.
Автор Багреда — сервиса проверки названия багов

Я веду курсы для тестировщиков (для начинающих и не только). Отдельные ссылки смотри ниже в блоке «мои курсы»

Как задать постоянное сходство процесса (affinity) ядрам процессора?

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

    спросил(а) 8 лет назад
  • последняя редакция 8 лет назад
    для отправки комментариев

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

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

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

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

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

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

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

  1. Откройте калькулятор и переведите его в режим программирования.
  2. Нажмите BIN и вставьте скопированное число.

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *