Questão disparidade entre a CPU% do `top` e o total de CPU do processo


Percebi que às vezes há (grandes) diferenças entre o uso total de CPU relatado e um somatório da utilização de CPU por processo dada por aplicativos como top e wmtop.

Por exemplo: recentemente corri um git filter-branch --index-filter em um repositório razoavelmente grande, com a tubulação de comando do filtro de índice git ls-files através de um grep filtrar e em xargs git rm --cached. Isso levou alguns minutos para ser executado; enquanto ia percebi que ambos wmtop e top estavam exibindo um uso total alto da CPU (acima de 50% no meu computador de 2 núcleos), mas isso não mostrou nenhum processo individual que estava usando uma quantidade significativa de tempo de CPU.

Alguns processos não são mostrados na lista de processos? Que tipos de processos são estes, e existe uma maneira de descobrir quanto tempo de CPU eles estão usando?


0


origem




Respostas:


Você deve adicionar um instantâneo de tops Saída para sua pergunta para que possamos ver exatamente o que você vê.

A discrepância mais comum nos indicadores de uso do processador é a contagem do tempo de "espera de E / S", bem como o tempo "na verdade, ocupado pela CPU". O tempo de espera de E / S é quando um processo seria estar ativamente fazendo algo, portanto, poderia ter usado todo o intervalo de tempo que o planejador forneceu, mas gerou como está bloqueado aguardando a conclusão das operações de E / S.

Processos de execução curta também têm um efeito: se há muitos processos iniciando, fazendo algo pequeno, e depois fechando, eles podem não ser vistos pelo topo ou por algo semelhante (especialmente se você não tiver atualização máxima com frequência) porque eles fizeram suas coisas e parou entre as atualizações. Mesmo que eles não estivessem presentes quando o top tirou suas amostras (então não aparecem na lista de tarefas), eles geralmente contam no /proc O sistema de arquivos continuará sendo mostrado desde a última amostra que a CPU estava ocupada para os ticks do X scheduler e ociosa para Y.


2



Ah, acho que seu segundo parágrafo tem isso. top estava refrescando a cada segundo ou mais, e o filter-branch processou 300 commits no espaço de alguns minutos, com cada commit sendo processado por um processo recém-criado. Existe uma maneira de obter top fazer uma amostragem mais frequente sem alterar sua frequência de atualização? - intuited
top não pode fazer isso, mas atop posso. Você deve encontrá-lo nos repositórios padrão da sua distribuição, se não puder obtê-lo (e mais informações) atoptool.nl - David Spillett