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

Выбрать ядро процессораРаспределение ядер процессора для выполнения определенной программы может оказаться полезным, если у на Вашем компьютере присутствует ресурсоемкое приложение, которое нельзя выключить, и которое при этом мешает нормальной работе за компьютером. Например, выделив антивирусу Касперского одно ядро процессора для работы, мы можем, пусть незначительно, но ускорить игру и 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.

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

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

  • 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

      По идее вот так (но не уверен):

      c:\windows\system32\cmd.exe /C start /affinity 1 "C:\Users\Home\Desktop\Server-Test\Unturned.exe -nographics -batchmode +secureserver/ServerClass"

      Ответить

  • 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

      Ответить

Оставить комментарий

Интересное
Список инструкций Windows 11 Windows 10 Подписаться