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

379
Juha

Проблема: у меня одноядерный процесс с колеблющейся нагрузкой (оптимизатор пути sc2).

Как я могу создать скрипт, который перемещает этот процесс в определенное ядро ​​и не позволяет другим процессам войти в это ядро?

Моя первоначальная идея - использовать скрипт командной строки для мониторинга процессов и постоянно (раз в секунду или около того) указывать им держаться подальше от ядра X, если только они не называются sc2-path-optimizer. sc2-path-optimizer затем принудительно загружается в ядро ​​X и больше никуда.

Возможно ли вышеуказанное? У меня есть 4 ядра, поэтому у меня есть дополнительные вычислительные возможности для выполнения других задач во время выполнения этого процесса, посвященного core-X.

Этот подход предлагается в другом месте, но каковы фактические команды для изменения сродства процессоров (или аналогичные) и команды для зацикливания потоков? Нужно немного подтолкнуть в правильном направлении.

https://stackoverflow.com/questions/5346692/how-to-reserve-a-core-for-one-thread-on-windows/5346714#5346714

Как я могу гарантировать, что на данном процессоре / ядре работает ровно один процесс?

0

1 ответ на вопрос

0
Juha

Частичный ответ:

Получить и установить сходство:

PowerShell "Get-Process app | Select-Object ProcessorAffinity" PowerShell "$Process = Get-Process app; $Process.ProcessorAffinity=255" 

https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-script

получить все процессы:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee176855(v=technet.10)