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

Осознать какой процесс вызывает завышенную нагрузку на диск можно на вкладке Processes. В новом диспетчере задач (возник в Виндовс 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 .

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

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

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

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

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

Также для получения данных о дисковой активности процессов можно использовать счетчики производительности (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

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

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

Добавить комментарий