Por que a CPU gastou tempo em IO (wa)?

18

Eu sei que wa (em top ) mede o tempo de CPU na espera por E / S. Muitos artigos dizem isso.

Mas estou confuso que, com base em dois pontos de conhecimento:

  1. se um processo usar uma chamada do sistema para ler o disco, o processo será bloqueado.
  2. Se um processo for bloqueado, ele não poderá ser agendado em execução na CPU.

certo?

Parece que não há tempo para a CPU aguardar a E / S ... O que acontece?

Se recomendar alguns livros ou artigos para eu ler mais, tanto melhor.

    
por HUA Di 21.04.2015 / 14:54

2 respostas

22

O status ocioso da CPU é dividido em dois estados "sub" diferentes: iowait e idle .

Se a CPU estiver inativa, o kernel determinará se há pelo menos uma E / S atualmente em progresso para um disco local ou um disco montado remotamente (NFS) que tenha sido iniciado a partir dessa CPU. Se houver, a CPU está no estado iowait . Se não houver nenhuma E / S em andamento iniciada a partir dessa CPU, a CPU estará em idle state.

Portanto, iowait é a porcentagem de tempo em que a CPU está inativa AND há pelo menos uma E / S em andamento iniciada a partir dessa CPU.

O contador iowait indica que o sistema pode manipular mais trabalho computacional. Só porque uma CPU está em iowait state não significa que não possa executar outros threads ou processos naquela CPU.

Portanto, iowait é simplesmente uma forma de tempo ocioso.

    
por 21.04.2015 / 15:08
-2

Não tenho 100% de certeza de que entendi a pergunta, mas há algumas ideias.

Há outra pergunta que perguntou isso e tem algumas boas respostas: Can alguém explica exatamente o que é o IOWait?

Há uma boa postagem aqui: link

    
por 21.04.2015 / 15:09