Relatório de utilização da CPU do Windows "iowait"

9

O Windows responde e relata " iowait" da mesma maneira que o Linux? Ou seja, os processos entram em "suspensão ininterrupta" e o tempo gasto é subtraído de "sem CPU"?

Em caso afirmativo, quais contadores Perfmon seriam apropriados para detectar "CPU ocupada devido a atrasos no serviço de E / S" em oposição a "CPU ocupada devido a computação?"

Yolo Perdiem
fonte
Esta é a magia do Kernel. Você pode consultar os "Internals do Windows" para obter uma imagem mais detalhada.
the-wabbit

Respostas:

10

Alguns dos conceitos no kernel do Windows diferem significativamente dos do Linux, é por isso que você não vê um iowaitcontador no Perfmon.

Primeiro, a entidade de agendamento no Windows é um encadeamento, não um processo. Um processo é apenas um contêiner para mais de 1 thread. Além disso, o Windows não define um estado de suspensão ininterrupta para seus encadeamentos (mais precisamente, todas as solicitações de E / S podem ser interrompidas - por exemplo, por outro encadeamento do mesmo processo), portanto, não haveria uma iowaitcontrapartida exata nas plataformas Windows. O Windows relata o tempo em que seus encadeamentos aguardam a E / S de sincronização como "inativos", pois os encadeamentos são simplesmente alternados por contexto pelo agendador assim que emitem solicitações de E / S de sincronização.

Se você estiver interessado na quantidade total de tempo gasto para operações de E / S em um dispositivo específico, consulte os contadores relacionados à latência, juntamente com o número de solicitações respectivas processadas dentro desse período. No entanto, isso não permitiria que você a decomponha nos padrões de acesso síncrono e assíncrono.

o wabbit
fonte