Como obter o número de processos aguardando CPU no Linux?

1

Se a CPU estiver executando 100% de uso, outros processos devem ser colocados dentro de uma fila de execução. Qual comando posso usar para obter o tamanho da fila de execução? vmstat parece retornar um valor relacionado da CPU, como abaixo:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 875128 576328 2147136    0    0     1     4    3   11  0  0 99  0  0

De acordo com o manual, " r : o número de processos executáveis (em execução ou aguardando por tempo de execução).", a coluna r indica o número de processos, incluindo os processos em execução e de espera. Como posso obter o número dos processos de espera?

    
por Zhao Yi 12.02.2018 / 03:53

1 resposta

1

O número de processos runnable é dado por procs_running em /proc/stat :

awk '/procs_running/ { print $2 }' /proc/stat

Subtraia o número de threads de CPU disponíveis, parando em 0, e você obterá o número de unidades de agendamento (processos ou threads) esperando para ser agendado. Você também pode determinar o número de threads de CPU disponíveis em /proc/stat , usando as linhas cpu? . Geral:

awk '/cpu[^ ]/ { nb = substr($1, 4); if (nb > nbcpus) nbcpus = nb };
/procs_running/ { runqueue = $2 - nbcpus; if (runqueue < 0) runqueue = 0; print runqueue }' /proc/stat
    
por 12.02.2018 / 08:53

Tags