Что может привести к замедлению работы приложения и системы? - PullRequest
4 голосов
/ 30 марта 2009

Я отлаживаю приложение, которое очень сильно тормозит систему . Приложение загружает с локального жесткого диска большой объем данных (около 1000 файлов по полбайт каждый). Файлы загружаются как файлы с отображением в память и отображаются только при необходимости. Это означает, что в любой данный момент времени использование виртуальной памяти не превышает 300 МБ.

Я также проверил количество дескрипторов с помощью handle.exe из sysinternals и обнаружил, что открыты не более 8000 нечетных дескрипторов. Когда данные выгружаются, они падают примерно до 400. Нет утечек ручки после каждой операции загрузки и выгрузки.

После 2-3 циклов загрузки-разгрузки, во время одной загрузки, система работает очень медленно. Я проверил использование виртуальной памяти приложения, а также подсчет дескрипторов на этом этапе, и это было хорошо в пределах (виртуальная машина около 460 МБ также не сильно фрагментирована, дескриптор составляет 3200).

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

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

Ответы [ 7 ]

1 голос
/ 05 июня 2009

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

Лучшим инструментом, подходящим для работы в этой ситуации, является ETW (Event Tracing для Windows), эти инструменты хороши, дадут вам точный ответ, который вы ищете

Проверьте их здесь

http://msdn.microsoft.com/en-us/library/cc305210.aspx а также http://msdn.microsoft.com/en-us/library/cc305221.aspx а также http://msdn.microsoft.com/en-us/performance/default.aspx

Надеюсь, это работает. Спасибо

1 голос
/ 01 апреля 2009

Инструменты, которые вы можете использовать на этом этапе:

  • Perfmon
  • Просмотр событий

По моему опыту, когда с системой возникают проблемы, которые не позволяют запускать диспетчер задач, они, как правило, относятся к разному оборудованию - проверка журнала системных событий Event Viewer иногда просто полна предупреждений или ошибок, связанных с некоторым оборудованием. Устройство отключено.

Если Event Viewer не указывает, что какая-либо регистрируемая аппаратная ошибка вызывает замедление, попробуйте Perfmon - добавьте счетчики для системных объектов для отслеживания чтения файлов, исключений, переключений контекста и т. Д. В секунду и посмотрите, есть ли что-то там очевидно.

Честно говоря, демонстрируемый тип поведения подразумевается невозможным - по замыслу - для кода пользовательского режима. WinNT прилагает много усилий, чтобы изолировать приложения друг от друга и не допустить, чтобы мошеннические приложения сделали систему непригодной для использования. Поэтому я подозреваю, что виновата какая-то аппаратная ошибка. Есть ли шанс, что вы сможете просто запустить один и тот же тест на другом ПК?

0 голосов
/ 09 июня 2009

Windows очень жадно относится к кешированию данных файла. Я попытался бы удалить файловый ввод / вывод, как кто-то предложил, и также удостовериться, что вы закрываете отображение файла, как только вы закончите с файлом. Ввод-вывод, вероятно, вызывает замедление, особенно если ваши файлы находятся на том же диске, что и ОС. Другой способ проверить это - переместить ваши файлы на другой диск и посмотреть, облегчает ли это проблему.

0 голосов
/ 30 марта 2009

когда диспетчеру задач требуется 2 минуты, у вас много работы с диском? или это связано с процессором?

Я бы попробовал Process Explorer из sysinternals. Когда ваша система находится в замедленном состоянии, и вы пытаетесь запустить, скажем, блокнот, обратите внимание на ошибки страницы.

0 голосов
/ 30 марта 2009

Если вы запускаете его в среде IDE, запускайте его, пока он не станет очень медленным, а затем нажмите кнопку «пауза». Вы поймете это, делая то, что занимает столько времени.

0 голосов
/ 30 марта 2009

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

Вы пытались закомментировать все операции чтения / записи, просто чтобы проверить, исчезает ли замедление? Стратегии «разделяй и властвуй» помогут вам найти суть проблемы.

0 голосов
/ 30 марта 2009

Вы используете такие инструменты, как "IBM Rational Quantify" или "Intel VTune", чтобы обнаружить проблему с производительностью.
[EDIT]
Как и Бенуа, одно хорошее средство - это измерение времени на выполнение заданий, чтобы определить, сколько ест процессор.
Но помните, что, поскольку вы работаете со многими файлами, скорее всего, отсутствует, что приводит к перестановке памяти на диске.

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