Как я могу указать привязку процессора? - PullRequest
2 голосов
/ 31 мая 2010

У меня есть приложение, которое испытывает некоторые проблемы при работе с многопроцессорными системами. Это не приложение, которое я испытываю к изменениям, и я хотел бы избежать его, если это возможно. Тем не менее, я не выше модификации кода, если мне нужно. Приложение написано на VBA (и, следовательно, я предпочитаю не прикасаться к нему).

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

Я знаю, что могу указать привязку процессора к задаче, используя .NET, и поэтому у меня есть возможность написать приложение оболочки, которое можно использовать для запуска устаревших приложений с указанной привязкой к процессору, есть ли у кого-нибудь опыт с этим и может выдвинуть некоторые идеи относительно головных болей, с которыми я, вероятно, столкнусь с этим подходом?

Другой вопрос: возможно ли на самом деле модифицировать основной продукт VBA, чтобы он соответствовал своему собственному процессору? Мне никогда не приходилось справляться с этим ни с одним из моих приложений изначально, так что это (на данный момент) полностью выходит за рамки моей компетенции.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 31 мая 2010

Один из способов сделать это - Набор средств для обеспечения совместимости приложений Windows .

Вы даете ему способ идентифицировать ваше приложение (например, по расположению .exe), а затем оно позволяет вам указать ряд настроек. Процессор сродства является одним из них. Он создает базу данных, в которой хранятся все ваши настройки.

Это для каждой машины, так что это не очень хорошее решение для широко распространенного приложения, но если это приложение должно работать только на одной машине, это избавит вас от необходимости менять код.

2 голосов
/ 31 мая 2010

Вы можете использовать PsExec от Sysinternal для запуска приложения с определенной привязкой к процессору, например, связать доступ к ЦП 1 вызовом

psexec.exe -a 1 "%ProgramFiles%\Microsoft Office\Office12\access.exe"

Чтобы ответить на ваш второй вопрос: поскольку вы пометили вопрос как access-vba , я предполагаю, что ваш код VBA является решением Access. Ваш VBA-код будет затем выполнен в процессе, т. Е. Вам нужно будет изменить привязку процессора к процессу access.exe. Невозможно изменить сродство двигателя VBA по отдельности.

Однако, прежде чем указывать привязку процессора, убедитесь, что вы полностью осведомлены о последствиях. Использование этой настройки может привести к нежелательным последствиям. Для хорошего примера прочитайте пост Раймонда Чена:

Психическая отладка: почему ваша дорогая четырехпроцессорная машина игнорирует три своих процессора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...