2013-06-08 7 views
0

Я сравниваю сервер Windows - веб-приложение, которое для аргумента использует один метод parseText().настройка производительности, когда процессор не закреплен и много памяти

Запуск одного экземпляра занимает менее 10 мс, однако, когда я увеличиваю его до 10 одновременных запросов, ситуация резко падает. Скажите 1 секунду за запрос.

ЦП не закреплен и имеется много доступной памяти. Поэтому я смущен тем, что такое узкое место.

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

Может кто-нибудь предложить некоторые счетчики, чтобы проверить, что может пролить свет на вопрос?

ответ

1

Мое первое предположение было бы либо дисковым IO, либо мьютексом.

Для диска попробуйте добавить физический диск, прочитайте байты/сек и напишите байты/сек, а также прочитайте/sec write/sec (т. Е. Как общие байты, так и фактические счетчики операций для чтения и записи). Убедитесь, что они не являются подсадки. Также можно добавить длину очереди, если вы заинтересованы. Вы ищете большие сдвиги, такие как 10Mb/sec или много небольших IO.

Для мьютексов, которые могут быть побочным эффектом распределения памяти (это может вызвать очень частое выделение памяти), попробуйте добавить «системные» и контекстные переключатели/сек и, возможно, системные вызовы/сек. Эти отскоки немного от общей нагрузки, поэтому сначала почувствуйте себя, а затем посмотрите, что произойдет.

Если вы считаете, что это вызвано пропускной способностью памяти (то есть исчерпанием FSB), то я не думаю, что perfmon может измерить это, вам нужно будет переключиться на нечто большее, чем vtune, что может быть или не быть вариантом для вы. Примером исчерпания полосы пропускания основной памяти будет программа, которая выделяет большие объемы памяти, а затем инициализирует каждый байт до некоторого значения и делает это LOTS. Если вы считаете, что это ваша проблема, вам может потребоваться изолировать рутину с помощью профайлов кода и от ее таких инструментов, но это сложно, если вы находитесь вне программы и просто наблюдаете.

+0

Спасибо, да, переключатели контекста/сек и системные вызовы/сек, похоже, попали в стену. Я могу увеличить количество потоков, на которые я загружаю тестирование, и каждый раз, когда я превышаю определенный счет, переключатели контекста/сек и системные вызовы/sec jump и perf. идет вниз. Поэтому я думаю, что похоже, что мьютексы, скорее всего, являются первопричиной .. странно то, что он попал в эту стену, а затем совершил такой огромный прыжок в # переключателя контекста. –