У меня есть приложение, которое имеет некоторые проблемы с обработкой многопроцессорных систем. Это не приложение, в котором я испытываю особую привязанность к модификации и хотел бы избежать его, если это возможно. Тем не менее, я не над модификацией кода, если нужно. Приложение написано в VBA (и, следовательно, моя склонность избегать его касания).Как определить сродство процессора?
Мы заметили, что приложение работает довольно плавно, если мы настроим близость процессора к одному процессору, используя диспетчер задач, только проявляя нестабильность, когда аффинность процессора не установлена.
Я знаю, что я могу указать близость процессора к задаче с использованием .NET и, как таковой, существует возможность написать приложение оболочки, которое может быть использовано для запуска устаревших приложений с определенным отношением к процессору, есть ли у кого-либо любой опыт с этим и может выкинуть некоторые идеи относительно головных болей, с которыми я, вероятно, столкнусь с этим подходом?
Другой вопрос: действительно ли можно изменить основной продукт VBA, чтобы справиться с его собственным сродством к процессору? Мне никогда не приходилось обращаться с этим каким-либо из моих приложений изначально, поэтому это (на данный момент) полностью выходит за рамки моего опыта.
Заранее спасибо
Мне было бы интересно узнать, какие проблемы вы видите, когда сродство к процессору не установлено. Как эти проблемы проявляются? –
@Gary McGill: Проблемы, которые мы видим (с Access 2003, для которого приложение было написано - и не будут работать в Access 2007/2010), - это сбои приложений и общая нестабильность доступа. Приложение было первоначально написано на одном процессоре CPU/single Core, и теперь у нас возникают проблемы с заменой. Приложение имеет все виды нестабильности на многопроцессорных и многоядерных машинах, но все еще отлично работает на старых машинах. Когда мы устанавливаем сродство к процессору, неустойчивость перестает быть проблемой. Приложение переписывается, но пока оно не завершено, мы застряли между камнем и твердым местом. – BenAlabaster
Используете ли вы несколько потоков в приложении VBA? Если ограничение многопоточного приложения на один процессор повышает производительность, это обычно указывает на проблему ложного кэширования. –