1
resposta

Questão "pega-ratão" sobre o comando de monitoramento da CPU

Fala, pessoal!

Queria compartilhar uma análise de uma questão do quiz que achei bem específica, daquelas para fazer a gente pensar.

A questão dá um cenário (empresa Techsafe) e pede a interpretação correta da saída do nosso comando completo de monitoramento da CPU:

top -bn1 | grep "Cpu(s)" | sed "s/.*, ([0-9.])% id./\1/" | awk '{print "Uso da CPU: " 100 - $1 "%"}'

Aí vêm as alternativas. A maioria é fácil de descartar (como "quantidade de processos" ou "interrupções de hardware").

Mas duas delas me deixaram na dúvida:

O valor indica o percentual de tempo que a CPU está sendo utilizada. (Esta foi marcada como INCORRETA)

O comando calcula o uso da CPU subtraindo o tempo ocioso de 100%. (Esta foi marcada como a CORRETA)

No começo eu achei estranho, porque o resultado final (ex: "Uso da CPU: 5%") é o percentual de tempo que a CPU está sendo usada. A alternativa (1) parece certa.

Só que, analisando o comando, a alternativa (2) é a única que descreve exatamente o que o comando faz, que é o ponto principal da aula.

Vamos quebrar o comando para ver:

top -bn1 | grep "Cpu(s)": Pega a linha da CPU.

| sed "... ([0-9.]*) ... id ...": Extrai (captura) apenas o número do tempo ocioso (id).

| awk '{print "Uso da CPU: " 100 - $1 "%"}': O "coração" da lógica está aqui. O awk pega o valor ocioso (que vira o $1) e faz a conta: 100 - $1.

Ou seja, o comando literalmente calcula o uso subtraindo o tempo ocioso de 100.

A alternativa (1) é uma consequência do cálculo, mas a (2) é a descrição do cálculo em si.

E a alternativa que diz "O valor representa o tempo total que a CPU passou ociosa" também estaria errada, porque o awk inverte esse valor (100 - ociosidade).

Por isso, a alternativa (2) é a mais correta e completa, pois ela descreve a mecânica exata do comando que foi construído.

O que vocês acharam? Também viram como "pega-ratão"?

1 resposta

Oi, João!

O comando pega o valor do tempo ocioso da CPU (quanto ela ficou parada) e faz o cálculo “100 - tempo ocioso”.
Assim, o número mostrado é o percentual de tempo que a CPU está sendo usada, calculado dessa forma.

Por isso, a resposta correta é:
“O valor indica o percentual de tempo que a CPU está sendo utilizada.”

As outras alternativas estão erradas porque:

  • Ele não mostra o número de processos.
  • Não mede interrupções de hardware.
  • Não mostra apenas o tempo em processos do usuário.
  • Não mostra o tempo ocioso, pois ele faz a conta invertida (100 - ocioso).
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!