Как я могу указать привязку процессора?

2

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

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

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

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

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

  • 0
    Мне было бы интересно узнать, какие проблемы вы видите, когда привязка процессора не установлена. Как эти проблемы проявляются?
  • 0
    @Gary McGill: Проблемы, с которыми мы сталкиваемся (с Access 2003, для которого было написано приложение - и не будет работать в Access 2007/2010) - это сбои приложения и общая нестабильность Access. Изначально приложение было написано на машинах с одним процессором или одним ядром, и теперь у нас возникают проблемы при замене. Приложение имеет все виды нестабильности на многопроцессорных и многоядерных машинах, но все еще отлично работает на старых машинах. Когда мы устанавливаем привязку процессора, нестабильность перестает быть проблемой. Приложение переписывается, но пока оно не завершено, мы застряли между молотом и наковальней.
Показать ещё 1 комментарий
Теги:
access-vba

2 ответа

2
Лучший ответ

Один из способов сделать это можно с помощью инструментария совместимости приложений Windows.

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

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

  • 1
    Также имейте в виду, что по умолчанию номер версии - это один из пунктов, который выбирается для идентификации вашего приложения. Если вы регулярно меняете номера версий в обновлениях, возможно, вы захотите снять этот флажок в качестве критерия, иначе ваши настройки перестанут работать с вашим следующим обновлением.
2

Вы можете использовать Sysinternal PsExec, чтобы запустить приложение с определенным сродством к процессору, например. для привязки доступа к вызову CPU 1

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

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

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

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

  • 0
    Наш ИТ-менеджер нашел этот способ взломать приложение, которое не справляется с многоядерной / многопроцессорной средой. IT проверяет, стабилизирует ли изменение сродства процессор приложение. Если это так, то это будет ИТ-инициатива. Меня попросили предоставить информацию с точки зрения разработки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню