Windows учитывает и сообщает « iowait» так же, как Linux? То есть процессы входят в «непрерывный сон», а их затраченное время вычитается из «CPU free»?
Если да, то какие счетчики Perfmon будут уместными для обнаружения «процессор занят из-за задержек, обслуживающих ввод-вывод», а не «процессор занят из-за вычислений?»
Ответы:
Некоторые понятия в ядре Windows значительно отличаются от таковых в Linux, поэтому вы не видите
iowait
счетчика в Perfmon.Во-первых, сущность планирования в Windows - это поток, а не процесс. Процесс - это просто контейнер для 1+ потоков. Кроме того, Windows не определяет непрерывное состояние сна для своих потоков (точнее, все запросы ввода-вывода могут прерываться - например, другим потоком того же процесса), поэтому
iowait
на платформах Windows не будет точного аналога. Windows сообщает, что ее потоки ожидают синхронизации ввода-вывода как «бездействующие», так как потоки просто переключаются в контекст планировщиком, как только они выдают запросы синхронизации ввода-вывода.Если вас интересует общее время, потраченное на операции ввода-вывода на конкретном устройстве, вам следует посмотреть на счетчики, связанные с задержкой, а также количество соответствующих запросов, обработанных за этот период времени. Это, однако, не позволит вам разбить его на синхронные и асинхронные шаблоны доступа.
источник