Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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


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

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


Изменить 2:

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

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