Меню Рубрики

Set affinity windows 7

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

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

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

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

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

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

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

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

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

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

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

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

А вдруг и это будет интересно:

Почему бы не подписаться?

Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)

Все годно, спасибо огромное, однако 1 вопрос, неужели винда научилась вызывать файлы без прописывания пути, или я чего-то не понимаю?

Для Windows можно определить конкретные папки (а есть определенные по умолчанию, после установки), для запуска программ из которых полный путь не нужен.

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

Хозяин компьютера вы, не переживайте. Просто некоторые процессы запускают своего рода виртуальные пользователи, типа Система, TrustedInstaller, которые имеют прав больше ваших по умолчанию.

а можно по подробней, как сделать этот шестнадцатеричный формат ? спасибо!

Николай. Например, у нас 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 ядер пустить на один процесс, а на второй софт — два других ядра?

Dmitry, а как назначить программе 43 ядра?
Пардон, просмотрел: 43 из 48. Хочу убедится, что прав (83FF FFFF FFFF)?
С уважением. Анатолий.

первые 43 из 48 ядер? у меня получается ffff ffff ffe0
Но могу ошибаться. И вообще что это за оборудование такое? (сдается мне на нем должны быть иные средства управления распределением нагрузки по ядрам).

Все правильно ffff ffff ffe0. Вы забыли указать, что бинарное значение надо вбивать учитывая, что нумерация идет с конца — 1,2,4 ядро — 1011, т.е. первая единица — четвертое «включенное» ядро, потом ноль — 3-е «выключенное» и соответственно 1 и 2 ядрам присвоена единичка («включены»)

У меня не работает на Windows 8.1. Вроде как запускается сначала cmd на мгновение а потом запускается приложение. Но оно все равно работает на одном процессоре.

Руслан, это может быть ограничение самого приложения: не все они могут работать на нескольких CPU

Спасибо. Полезная вещь насчет командной строки. А то забодался уже лазить в диспетчер и отключать второе ядро. Иначе игра вылетает : )

Добрый день
Это не игровой сайт, но может вы поможете разобраться,ибо решения данной проблемы в инете просто нет (кроме одного совета), а я в компах-ЧАЙНИК)

Проблема: Любая устанавливаемая версия FIFA-неестественно быстрая, т.е. все игроки двигаются с сумасшедшей скоростью, как минимум в 3 раза быстрее, чем должны (как при перемотке видео). Как на Windows 7 Pro x64 так и на Windows 10 Pro 64 (обе-лицензии).

Комплектующие ПК- совместимы между собой и отвечают системным требованиям игр + установлено все дополнительное ПО-Direxct X и д.р. Драйвера видеокарт-последней версии (устанавливал все предыдущие версии на обеих-не помогает) термопаста как в видеокарте gtx 550-ti (gtx 1080-новая и на ней тоже самое) так и на процессоре качественная и заменена правильно.

Такая проблема только с FIFA-остальные игры и сами ОС работают великолепно.

Единственный совет, который я нашел-это запускать игру на 1 ядре процессора. У меня i7 6700K

Из-за чего вообще возникает моя проблема? Поможет ли совет?

Извините за целый рассказ

Здравствуйте.
Не могу ответить. Сам поискал еще и у американцев на тему — но ничего такого не описывают. При этом игра не зависима от скорости процессора, по идее (давно уже таких не делают). Так что какой-то глюк, а вот как помочь — не знаю.

Слышал, что это происходит когда у процессора непостоянная частота (в простое маленькая, а при нагрузке увеличивается) При запуске игра определяет маленькую частоту, потом процессор разгоняется… Можно в биосе отключить, хотя это неудобно.

А как быть если у меня 2 физических процессора по 12 ядер? Нигде не могу найти мануала

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

Доброго! Уже потихоньку начинает глаз дергаться.
Win7 x64 pro, i5-2500k — соответственно 4 ядра. Создаю батник в папке с нужной прогой, которая должна работать на 3 и 4 ядрах, т.е. в bin 1100 -> hex 0x0C:
start /affinity C program.exe -параметры запуска — получаю привязку к последнему по списку ядру. Ладно, думаю, я криво посчитал и решил проверить, привязав к первому ядру /affinity 1 — при запуске опять на 4-ом ядре! В общем, как я не старался, каменный цветок не вышел. Может быть важно, приложение написано под х64.

А может оно просто не может работать многопоточно?

ребята помогите, кто умеет это считать у меня проц 5650 надо для каждого ядра отдельно, а их там 12 запускать прогу
какие значения писать для 1,2 и т.д. 12

Источник

Настройка 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, а команда для запуска процесса с привязкой к четырем ядрам будет выглядеть так:

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

Источник

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

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

  • Service windows error reporting
  • Service wcf service windows
  • Service user profile service windows 7
  • Service pack latest windows 7
  • Service pack 3 для windows xp iso