Настройка соответствия на Windows Server 2003

У меня есть программа, которая по умолчанию работает только на одном процессоре. Я пытался использовать start /affinity x notepad.exe пакетная команда, но я не могу заставить ее запустить мою программу. он изменяет заголовок окна командной строки, но не выполняет программу. эта команда запуска работает для блокнота, так что это может быть просто проблема с программным обеспечением. Я установил сходство вручную через диспетчер задач, поэтому я знаю, что это работает.

Я не программист этого программного обеспечения, поэтому изменение не является вариантом.

Обновление: я получил это, чтобы запустить программу сейчас. Я добавил exit Команда до конца моего пакетного сценария. Теперь мне нужно знать, как работает флаг /affinity. Я не могу заставить его использовать 4 процессора '.

Обновление 2: так что я наконец понял, что флаг /affinity ожидает шестнадцатеричное число. Теперь я могу правильно установить сродство для блокнота, но все равно не могу установить его для используемого мной программного обеспечения. Может ли быть так, что программа просто не поддерживает многопоточность?

3 ответа

Решение

Моя первая проблема заключалась в том, что командный файл не запускал мою программу. Это закончилось проблемой с пробелами на пути. Я не мог понять, как избежать их, поэтому я просто использовал короткие имена. (например, c:/progra~1/ вместо c:/program files/)

Вторая проблема заключалась в установлении близости. Оказывается, что флаг сходства в команде запуска принимает шестнадцатеричные числа. программное обеспечение все еще не работает, но это связано с программным обеспечением. Это исправлено разработчиком сейчас. (ура!)

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

Это побитовое, поэтому конвертировать двоичные в десятичные. Например. 0001 = 1 = процессор1, 1000 = 8 = процессор4, 1111 = 15 = все четыре процессора

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


Редактировать:

Приятно знать, что у тебя это работает. Как уже говорили другие, параметр "сродства" является битовой маской; Итак, вам нужно использовать "1" для "CPU 1", "2" для "CPU 2", "4" для "CPU 3", "8" для "CPU 4" и т. д.; вы можете установить сродство к нескольким процессорам, добавив эти числа, поэтому, если вы хотите, чтобы ваш процесс использовал процессоры 3 и 4 (но не 1 и 2), вы должны использовать "12". "15" - это то, что вы должны использовать для обозначения "всех первых 4 процессоров".


Изменить 2:

Конечно, если ваша программа не многопоточная, она не выиграет от наличия большего количества процессоров. Чтобы исключить это, установите его сходство с помощью диспетчера задач и посмотрите, как он себя ведет; если у вас четыре ЦП, но программа использует не более 25% общего системного времени ЦП, то она однопоточная; если он достигает 50%, он запускает не более двух потоков. Если ему удастся подняться до 100%, то он может получить максимальную отдачу от вашего сервера (но будьте осторожны, чтобы не замедлить все остальное).