Eu sei wa
(in top
) mede o tempo da CPU na espera de E / S. Muitos artigos dizem isso.
Mas estou confuso que, com base em 2 pontos de conhecimento:
- se um processo usar uma chamada do sistema para ler o disco, o processo será bloqueado.
- Se um processo estiver bloqueado, não poderá ser agendado para execução na CPU.
Certo?
Parece que não há tempo para a CPU aguardar na E / S ... O que acontece?
Se recomendar alguns livros ou artigos para eu continuar lendo, tanto melhor.
Respostas:
O status ocioso da CPU é dividido em dois "sub" - estados diferentes:
iowait
eidle
.Se a CPU estiver ociosa, o kernel determinará se há pelo menos uma E / S atualmente em andamento em um disco local ou em um disco montado remotamente (NFS) que foi iniciado a partir dessa CPU. Se houver, a CPU está no estado
iowait
. Se não houver E / S em andamento iniciada a partir dessa CPU, a CPU estará noidle
estado.Portanto,
iowait
é a porcentagem de tempo em que a CPU está ociosa E há pelo menos uma E / S em andamento iniciada a partir dessa CPU.O
iowait
contador afirma que o sistema pode lidar com mais trabalho computacional. Só porque uma CPU está noiowait
estado não significa que ela não pode executar outros threads ou processos nessa CPU.Então,
iowait
é simplesmente uma forma de tempo ocioso.fonte
dd if=/dev/sda of=/dev/null
fazer um altowa
. Em seguida, execute um código while-true, emwa
vez deus
. Graças ao caos.Não tenho 100% de certeza de entender a pergunta, mas há algumas idéias.
Há outra pergunta aqui que faz isso e tem algumas boas respostas: alguém pode explicar com precisão o que é o IOWait?
Há uma boa publicação aqui: http://veithen.github.io/2013/11/18/iowait-linux.html
fonte