Как удалить и предотвратить все процессы, кроме одного, который я выбрал из определенного ядра на практике (win10)?
Проблема: у меня одноядерный процесс с колеблющейся нагрузкой (оптимизатор пути 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
Как я могу гарантировать, что на данном процессоре / ядре работает ровно один процесс?
1 ответ
Частичный ответ:
Получить и установить сходство:
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)