Linux top -n 1 O comando não é atualizado

1

Eu estou chamando o comando Linux top -n 1 -b de um aplicativo Qt para obter a porcentagem livre da CPU. Este aplicativo chama esse comando a cada 3 segundos, mas o uso da CPU parece ser atualizado apenas na primeira vez que o comando é chamado no aplicativo e, em seguida, salva esse valor no cache (apenas o uso da CPU, todos os outros valores são atualizados com cada chamada) . Se eu testar manualmente o comando "top -n 2 -b" no console, a CPU "realtime" será atualizada somente após a segunda iteração. Eu não posso esperar para a segunda iteração em meu aplicativo para atualizar o valor da CPU, então eu queria saber se há alguma variável de sistema ou cache que pode ser modificado para obter este valor de atualização na primeira iteração.

    
por Nicolas Vallejo 26.10.2015 / 11:38

1 resposta

1

Cada iteração top/proc/stat cpu linhas e compara os valores com os da leitura anterior, que são zeros na primeira iteração. Comparando com os valores que você tem 3 segundos atrás, você obtém uma distribuição média dos estados da CPU por esses 3 segundos. Comparando com zeros, você tem uma média de tempo de atividade total do sistema ( /proc/stat tem todos os zeros na inicialização do sistema), ou seja, você tem porcentagens válidas na primeira top iteration, mas calculou a média por muito mais tempo. / p>

Ao analisar /proc/stat manualmente, ainda são necessárias duas leituras em diferentes momentos.

    
por 26.10.2015 / 13:38