Несколько экземпляров приложения, ограничение GDI для Windows - PullRequest
0 голосов
/ 13 февраля 2011

Я пытаюсь запустить одновременно сотни экземпляров одного и того же приложения (используя C #), и после примерно 200 экземпляров графический интерфейс начинает резко замедляться до тех пор, пока время загрузки следующего экземпляра не поднимется до 20 секунд (с1с).

Тестовая обработка: xeon 5520, 12 ГБ, Windows 2008 Web 64 бит

при максимальной нагрузке (200 экземпляров), процессор находится на уровне около 20%, а оперативная память 45%, поэтому имуверен, что это не аппаратная проблема.

Я уже пытался настроить размер сеанса и SharedSection в реестре Windows, но, похоже, это не помогло.

Я также пытался запустить приложение в фоновом режимеа также в нескольких сеансах (разных сеансах) и все так же (хотя, возможно, это ограничение для сеанса).

Когда происходит замедление, например, в одном сеансе, я могу войти в другой сеанс, и рабочие столы работают безпроблема (первый декстоп стал непригодным для использования.)

Мой вопрос - есть ли способ раздеть объекты gdi или, возможно, eограничить использование графического интерфейса?или это ограничение Windows?

ps - я не могу изменить приложение, так как оно является третьим.

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

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Я сомневаюсь, что это GDI - если у вас не хватает дескрипторов / ресурсов GDI, вы заметите, что огромные куски ваших окон не перерисовываются, а не замедляются все остальные.

Наиболее вероятная причина внезапного паденияпроизводительность заключается в том, что вы увеличиваете объем ОЗУ и перебиваете виртуальную память, поскольку все ваши процессы борются за процессорное время.Проверьте использование памяти и, если она высока, посмотрите, сможете ли вы уменьшить объем своего приложения.Или примените «аппаратное исправление», установив больше оперативной памяти.Или добавьте Sleeps в свои приложения, где это возможно, чтобы они не требовали постоянных временных интервалов от вашего ЦП (и, следовательно, не нуждались в постоянной загрузке из ВМ).

0 голосов
/ 13 февраля 2011

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

Редактировать: упс, неправильная ссылка.

Попробуйте отслеживать переключение контекста в вашей системе http://technet.microsoft.com/en-us/library/cc938606.aspx

...