Найти узкое место: дисковый ввод / вывод в Windows XP

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

Это происходит в периоды высокого доступа к диску (чтение / запись файлов объемом в несколько гигабайт), но не каждый раз и не в течение всего периода доступа к диску. Эти файлы также хранятся строго дефрагментированно специально для того, чтобы не допустить такого рода "поискового обмана".

Я подозреваю, что проблема связана либо с антивирусом системы, либо с какой-то службой индексации диска, о которой я не знаю (AFAIK, там нет ни одного запущенного, но...). К сожалению, мой Performance Monitor-fu очень, очень слабый (хорошо, почти не существует), и я не знаю, как подтвердить / опровергнуть мои подозрения или выяснить, в чем заключается настоящий виновник.

Обновить:

Обозреватель процесса нашел виновников для меня - сервисы Java Quick Starter и Windows Search. Отключение первого имело заметное влияние на производительность, а отключение второго имело огромное значение (несмотря на то, что не было предоставлено никаких файлов для доступа). Оба выполняли в 5-20 раз больше доступа к диску, чем любой другой процесс.

Спасибо всем за вашу помощь!

6 ответов

Решение

Загрузите Process Explorer (sysinternals/microsoft).

В разделе "Просмотр" выберите "Столбцы", "Производительность процесса", например, выберите "IO Write Bytes", "IO Read Bytes".

Вы можете нажать на эти столбцы для сортировки.

SysInternals имеет несколько инструментов, которые могут помочь здесь. Их инструмент PerfMon предоставит вам (исчерпывающую) информацию о том, что к чему имеет доступ. Если это действительно AV-инструмент, выполняющий сканирование, то он должен явно отображаться там. Если это фоновая задача Windows, то все становится немного сложнее, но эти обращения также отображаются там. Даже если менее очевидно, какая служба отвечает.

Я успешно использую Sysinternals FileMon, чтобы выяснить, какая программа выполняет много операций ввода-вывода и с какими файлами. Например, когда я переключился на твердотельный накопитель с низкой производительностью произвольной записи (4 IOPS, OCZ Core v1), FileMon сказал мне, какие программы занимались записью, и я мог переместить эти файлы с твердотельного накопителя на другой жесткий диск. Это также помогло мне узнать, что обновление отметок времени последнего доступа снижает производительность (когда Locate32 индексирует все мои диски один раз в день), поэтому я смог отключить отметки времени последнего доступа.

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

Как только вы проверите проблему ввода / вывода, используйте что-то вроде FileMon или Process Monitor for Microsoft ( Sysinternals), чтобы увидеть, какой процесс вызывает активность.

Если вы не видите процесс, соответствующий вводу / выводу, то это может быть проблема файла подкачки / памяти. Вернитесь в системный монитор и добавьте память / страниц в секунду. Это покажет, как часто процесс должен переходить с диска на страницу памяти в оперативной памяти. Если это значение выше нуля, значит, вам нужно больше памяти, или приложение имеет утечку памяти. Чтобы найти утечку памяти, используйте Process /Pages per second, чтобы увидеть, какой процесс форсирует страницы.

Вы можете настроить Perfmon для запуска команд при достижении определенных пороговых значений, поэтому DLux предложил отслеживать текущую длину очереди диска и, если она достигает 3 или 4, установить ее для запуска пакетного файла. Пакетный файл может вызвать утилиту наподобие filemon, которая может регистрировать все файлы, к которым обращается система, и которая должна дать лучшее представление о том, к чему система обращается.

Возможным виновником может быть чрезмерное использование файла подкачки. Вы можете использовать PerfMon для отслеживания ошибок страниц в секунду. Если они повышаются, когда ваша производительность падает, есть ваш ответ.

Другие вопросы по тегам