Найти процесс, который сильно нагружает диск в Windows

Некоторый запущенные процессы могут сильно нагружать диск в Windows операциями ввода/вывода (до 100%), парализуя нормальную работу других приложений. В этой статье мы рассмотрим базовые инструменты Windows, которые можно использовать, чтобы найти процессы, который сильно нагружает дисковую подсистему.

Проще всего посмотреть текущую нагрузку на диск их диспетчера задач (Task Manager). Нажмите Ctrl +Shift + Esc , перейдите на вкладку Performance, выберите один из физических дисков. На скриншоте приведен пример ситуации, когда один из дисков загружен под 100%.

Процесс нагружает диск под 100%

Понять какой процесс вызывает повышенную нагрузку на диск можно на вкладке Processes. В новом диспетчере задач (появился в Windows 10) на вкладке процессов кроме стандартных столбцов об использовании процессами ресурсов RAM и CPU, есть колонка с нагрузкой на диск. Отсортируйте процесс по столбцу Disk и в топе вы увидите название программы, которая активно использует диск.

Найти процесс, который грузит диск

Можно получить более детальную информацию об этом процессе. Щелкните по процессу и выберите Go to Details.

Для удобства добавим в Task Manager дополнительные столбцы (щелкните правой кнопкой по шапке таблицы и выберите Select Columns). Добавьте столбцы:

  • I/O read bytes
  • I/O write bytes
  • Command line

Это позволит понять профиль использования дисковой подсистемы (процесс преимущественно читает или пишет), а также строку запуска программы. В этом случае понятно, что высокую нагрузку на диск вызывает запущенный PowerShell скрипт ( *.PS1 ).

Вывести количество байт записанных и прочитанных процессом в диспетчере задач

В данном случае мы узнали имя процесса, но не понятно, в какой именно файл (файлы) идет активная запись/чтение. Для определения файла проще всего воспользоваться встроенным монитором ресурсов Resource Monitor. Откройте его с вкладки Performance или командой resmon.exe .

Открыть монитор ресурсов Windows

Перейдите на вкладку Disk. Отсортируйте процессы по активности I/O, выберите процесс, вызывающий высокую нагрузку на диск (включите на нем чекбокс).

Теперь в разделе Disk Activity будет содержаться отфильтрованный список файлов, которые используются этим процессом. Найдите файл с наибольшим количеством операций записи и/или чтения. Это и будет искомый файл.

Resource Monitor - файлы с большим количеством операций записи/чтения

Также для получения информации о процессах и потоках, нагружающих диск можно использовать утилиту Process Explorer (нужно скачать с сайта Microsoft). Утилита Process Explorer предоставляет детальную информацию о нагрузке на диск, позволяя найти конкретные процессы и потоки, ответственные за интенсивную работу с диском, а также изучить используемые ими файлы и ресурсы.

По умолчанию Process Explorer не показывает информацию об операциях чтения и записи. Поэтому выберите меню View -> Select columns, перейдите на вкладку Process IO и добавьте столбцы I/O Read Bytes и I/O Write Bytes.

Process Explorer - добавить информацию об операция ввода вывода

Теперь, отсортировав список процессов по I/O, вы сможете найти процессы, вызывающие нагрузку на диск. Также на вкладке Threads можно найти конкретные потоки процесса, вызывающие интенсивный ввод-вывод

Process Explorer - информация об использовании диска

Если процесс, сильно нагружающий диск запущен с правами SYSTEM, найти его с помощью Task Manager или Resource Monitor будет проблематично. Такие процессы могут просто не отображаются в диспетчере задач.

На скриншоте показан пример процесса SYSTEM, который активно использует VMDK файл. По контексту понятно, что это файл виртуальной машины VMware Workstation, но из названия процесса это не явно.

Процесс system сильно нагружает диск

К примеру, это процесс System с PID 4. Это стандартный системный процесс, который выполнятся в режиме ядра (в этом процесс также запускаются драйвера устройств). Для изучения использования диска системными процессами лучше использовать утилиту Process Monitor (ProcMon), которая показывает в том числе активность дискового I/O в том числе для процессов уровня ядра.

Procmon позволяет вывести информацию об активности использования файлов. Выберите в меню Tools -> File Summary. Выберите активно используемый файл и дважды щелкните по нему. Это добавит путь к файлу в фильтры Procmon. Таким образом можно определить, что высокую нагрузку на диск вызывает vmware-vmx.exe (основной процесс VMware Workstation, отвечающий за запуск и работу виртуальных машин).

ProcMon - найти файлы и процессы, которые много пишут (читают) с диска

Также для получения данных о дисковой активности процессов можно использовать счетчики производительности (Performance Counters). Ниже пример PowerShell команды, которая выведет топ 10 процессов по дисковой активности в реальном времени согласно данным в счетчиках производительности:

Get-Counter '\Process(*)\IO Data Bytes/sec' | Select-Object -ExpandProperty CounterSamples | Sort-Object -Property CookedValue -Descending | Select-Object InstanceName, CookedValue -First 10

PowerShell - вывести топ процессов по дисковой активности согласно счетчиков производительности

Это покажет топ-10 процессов с наибольшей скоростью ввода-вывода данных на диск. С помощью утилиты Handle (от Sysinternals) можно посмотреть, какие файлы используются ваши процессами:

handle.exe -p <ProcessNameOrPID>

Команда выведет все открытые дескрипторы файлов указанного процесса (по его PID).

handle - вывести файлы открытые процессом

Пример использования утилиты Handle для снятия блокировки отрытых файлов.

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


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)