В одной из наших коробок для разработки возникла проблема, из-за которой производительность иногда снижалась. Когда это происходит, вы слышите, как работает жесткий диск, но я не знаю, что его вызывает.
Это происходит в периоды интенсивного доступа к диску (чтение / запись файлов размером несколько гигабайт), но не каждый раз и не в течение всего периода доступа к диску. Эти файлы также подвергаются строгой дефрагментации, специально для предотвращения «перебоев при поиске», которые могут возникнуть.
Я подозреваю, что проблема связана либо с антивирусом системы, либо с какой-то службой индексации дисков, о которой я не знаю (AFAIK, их нет, но…). К сожалению, мой Performance Monitor-fu очень и очень слабый (хорошо, почти не существует), и я не знаю, как подтвердить / опровергнуть свои подозрения или выяснить, в чем истинный виновник.
Обновить:
Обозреватель процессов обнаружил для меня виновных - службы Java Quick Starter и Windows Search. Отключение первого оказало заметное влияние на производительность, а отключение второго имело огромное влияние (несмотря на то, что не было предоставлено никаких файлов для доступа). Оба выполняли доступ к диску в 5-20 раз больше, чем любой другой процесс.
Спасибо всем за помощь!
Загрузите Process Explorer (sysinternals / microsoft).
В разделе «Просмотр», «Выбрать столбцы», «Производительность процесса» выберите, например, Байты записи ввода-вывода, байты чтения ввода-вывода.
Вы можете щелкнуть по этим столбцам для сортировки.
У SysInternals есть несколько инструментов, которые могут здесь помочь. Их инструмент PerfMon предоставит вам (исчерпывающую) информацию о том, что к чему получает доступ. Если это действительно антивирусный инструмент, выполняющий сканирование, он явно должен там проявиться. Если это фоновая задача Windows, все становится немного сложнее, но эти обращения также отображаются там. Даже если менее очевидно, какая служба несет ответственность.
Чтобы проверить проблему с дисковым вводом-выводом, вам нужно будет начать с отслеживания длины очереди логического диска / текущего диска на каждом диске в системном мониторе. Обычно это значение должно оставаться равным нулю, если у вас нет нескольких процессов, обращающихся к диску. Чрезмерный ввод-вывод или низкая производительность диска увеличивают длину очереди.
Как только вы проверите проблему ввода-вывода, используйте что-то вроде FileMon или Монитор процесса для Microsoft (Sysinternals), чтобы увидеть, какой процесс вызывает активность.
Если вы не видите процесс, соответствующий вводу-выводу, это может быть проблема файла подкачки / памяти. Вернитесь в Performance Monitor и добавьте Память / Страниц в секунду. Это покажет, как часто процесс должен переходить на диск к страничной памяти в ОЗУ. Если это значение больше нуля, то вам нужно больше памяти или в приложении есть утечка памяти. Чтобы найти утечку памяти, используйте Process / Pages per second, чтобы узнать, какой процесс форсирует страницы.
Я успешно использую Sysinternals FileMon, чтобы узнать, какая программа выполняет много операций ввода-вывода и с какими файлами. Например, когда я переключился на SSD с низкой производительностью произвольной записи (4 IOPS, OCZ Core v1), FileMon сообщил мне, какие программы выполняли запись, и я мог переместить эти файлы с SSD на другой жесткий диск. Это также помогло мне узнать, что обновление отметок времени последнего доступа убивает производительность (когда Locate32 индексирует все мои диски один раз в день), поэтому я смог отключить отметки времени последнего доступа.
Вы можете настроить Perfmon для запуска команд при достижении определенных пороговых значений, так как DLux предлагает отслеживать текущую длину очереди диска, и если она достигает 3 или 4, установите запуск командного файла. Пакетный файл может запускать такую утилиту, как filemon, которая может регистрировать все файлы, к которым обращается система, и это должно дать лучшее представление о том, к чему система обращается.
Возможной причиной может быть чрезмерное использование файла подкачки. Вы можете использовать PerfMon для отслеживания ошибок страниц в секунду. Если они увеличиваются при снижении производительности, вот вам ответ.