Como o iostat calcula que o tempo ocioso da CPU seja considerado como% ocioso ou% iowait?

3

Eu estava passando pela página iostat man. De acordo com isso,

 %iowait
 Show the percentage of time that the CPU or CPUs were idle during which the system    
 had an outstanding disk I/O request.   

 %idle
 Show the percentage of time that the CPU or CPUs were idle during which the system    
 did not have an outstanding disk I/O request.                  

Eu não entendi como o iostat descobre que a solicitação de E / S está pendente ou não.

    
por pradeepchhetri 25.10.2012 / 08:23

2 respostas

3

O iowait é basicamente o tempo médio (em milissegundos) para solicitações de E / S emitidas para o dispositivo a ser servido. Isso inclui o tempo gasto pelas solicitações na fila e o tempo gasto na manutenção delas.

Medido em uma base por io na frente do programador io até que a io esteja pronta. Ele abrange o tempo que é levado pelo agendador, driver, controlador, transporte (para san) e armazenamento necessário para concluir cada io. É o tempo médio, em milissegundos, para solicitações de E / S concluídas pelo armazenamento e inclui o tempo gasto pelas solicitações na fila do planejador e o tempo gasto pelo armazenamento que as atende.

Existem várias fases de um pedido de veiculação enquanto ele está sendo transferido. Depois que o aplicativo envia um IO, uma solicitação é alocada para ele. Quando o kernel da solicitação é concedido, ele vê se pode mesclar o io a qualquer fila de solicitações existente. O tempo gasto na fila de solicitações aumenta o tempo total de serviço. Então, após a fusão, o io é submetido ao armazenamento. Se o armazenamento estiver sob pressão ou não puder lidar com os números de pedido de veiculação, o nosso pedido de veiculação também terá que esperar para ser atendido pelo armazenamento. Portanto, existem essencialmente duas fases de espera que o iostat mede.

O arquivo proc / proc / diskstats é aquele a que se refere para o propósito.

    
por 25.10.2012 / 15:19
1

Perguntando ao kernel. Esta informação está diretamente contida na primeira linha de /proc/stat , veja o documentação do proc .

    
por 25.10.2012 / 10:13