Установка сходства в скрипте / пакетном файле
391
Harry Rogers
Установка соответствия для данного процесса с помощью следующего отлично работает
PowerShell "get-process Notepad | %% { $_.ProcessorAffinity=1 }"
То, что я хотел бы сделать, это установить маску процессора по-разному для каждого экземпляра данного процесса, с которым сталкивается скрипт. То есть установите сходство экземпляров данного процесса в стиле «циклического перебора». Каждому экземпляру должно быть назначено «следующее доступное» ядро
instance 1 -> 00000001 (first core) instance 2 -> 00000010 (second core) instance 3 -> 00000100 etc.. instance 8 -> 10000000 (8th core) instance 9 -> 00000001 (back to the first core again) instance 10 -> 00000010 (second core again)
и так далее.
Обычно в каждый момент времени происходит от 10 до 20 экземпляров процесса, и сценарий будет запускаться по расписанию каждые несколько минут, чтобы равномерно распределить нагрузку по всем ядрам.
Заранее большое спасибо за любые предложения.
С вашим форматом, вероятно, связано [Изменить сходство процесса с помощью скрипта Windows в StackOverflow] (https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-script). Вы уже знаете, что делать и какие команды вам нужны. Так что я не совсем уверен, в чем твоя проблема? Используйте переменную и все готово?
Seth 6 лет назад
1
Извините, если мне не ясно. Существует несколько примеров процесса I, для которого устанавливается сродство. Я хочу распределить их по всем доступным ядрам, чтобы они получили по одному ядру. Я искал синтаксис / логику скрипта, который мог бы справиться с 'n' экземплярами - т.е. настроить маску процессора для каждого встреченного экземпляра. Спасибо
Harry Rogers 6 лет назад
0
Ну, мое упоминание все еще применяется. Используйте переменную для подсчета. Ваш код уже заботится о N экземплярах. Единственное, что вам нужно сделать, - это использовать переменную для подсчета и, возможно, по модулю, если у вас больше экземпляров ядер (таким образом, модуль будет иметь количество ядер). Вам просто нужно увеличивать эту переменную с каждой итерацией вашего цикла и использовать ее вместо статического значения.
Seth 6 лет назад
0
Спасибо, что снова посмотрел на это, Сет. Я думаю, мой запрос больше о том, как написать скрипт, который а). подсчитывает количество экземпляров данного процесса и b) выполняет арифметику по модулю в цикле - я нашел несколько других постов, которые могут указать мне правильное направление, и я прочту еще немного о синтаксисе powershell
Harry Rogers 6 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
3
Как я могу "инвертировать" структуру каталогов?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
7
Запустить синергетический клиент при загрузке в Mac OS X
-
-
4
Как синхронизировать скрипты GreaseMonkey между компьютерами?
-
1
Могу ли я написать скрипт, который будет автоматически переключать пользователей?
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
3
Сбой FTP «PUT» на виртуальной машине, но не на хост-ПК: 504 Команда не реализована для этого парамет...
-
1
ksh эквивалент perl $! причина ошибки
-
2
Ошибка индекса вне диапазона в сценарии VBScript
-
5
crontab разбудить osx из сна