Gostaria de saber se a saída de um Linux baseado em Red-Hat pode ser interpretada de maneira diferente por um Linux baseado em Debian.
Para tornar a questão ainda mais específica, o que pretendo é entender como a "média de carga" da primeira linha do topcomando em um sistema Red-Hat é interpretada e como verificar isso pelo código oficial da documentação ro.
[Há muitas maneiras de abordar esse assunto, todas as quais são respostas aceitáveis para a pergunta]
Uma abordagem potencial seria descobrir onde essas informações são oficialmente documentadas.
Outro seria encontrar a versão do código que topé criada na distribuição e versão específicas em que estou trabalhando.
A saída do comando que estou recebendo é:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
Nesse caso, como posso interpretar o valor médio da carga ?
Eu consegui localizar que a carga média é de última hora, de uma fonte de documentação e que deve ser interpretada após ser multiplicada por 100, por outra fonte de documentação.
Então, a pergunta é:
é 0,02% ou 2% carregado?
Fontes e versões da documentação:
1) A primeira estrela com
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Fonte: man topna minha distribuição RedHat, o
Ubuntu também possui a versão com "tarefas" que não explica a média de carga em:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) O segundo começa com
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Fonte:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Este começa com:
TOP(1)
NAME
top - display and update information about the top cpu processes
Fonte: http://www.unixtop.org/man.shtml
O primeiro , pode ser visto por man topin RHELou in online ubuntu documentatione não possui explicação para o formato de saída (nem sobre a média de carga em que estou interessado) .
O segundo , contém uma breve explicação, apontando que a média de carga tem a ver com o último 1 minuto, mas nada sobre a interpretação de seu valor!
Cito diretamente da segunda fonte:
2a Médias UPTIME e LOAD
Esta parte consiste em uma única linha que contém:
nome do programa ou da janela, dependendo do modo de exibição
hora atual e tempo desde a última inicialização,
número total de
cargas médias do sistema de usuários nos últimos 1, 5 e 15 minutos
Portanto, se essa explicação estiver realmente correta, basta entender que a média de carga é de aproximadamente 1 minuto.
Mas isso não explica o formato do número.
Na terceira explicação, diz o seguinte:
Ao especificar números para médias de carga, eles devem ser multiplicados por 100.
Esta explicação sugere que 0,02 significa 2% e não 0,02%. Mas isso está correto? Além disso, é correto para todas as distribuições de Linux e implementações potencialmente diferentes de top?
Para encontrar a resposta para essa pergunta, tentei pesquisar o código pesquisando on-line. Mas eu encontrei, pelo menos, duas versões diferentes do toprelacionado ao RHEL por aí! o builtin-top.ce o refatorado top.c. Ambos os direitos autorais da Red-Hat, como diz o aviso no início do código, parecem lógicos, pois o RHEL usa um deles.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Portanto, antes de me aprofundar em tanto código, eu queria uma opinião sobre onde focar para formar um entendimento preciso sobre como a carga da CPU é interpretada?
A partir das informações fornecidas nas respostas abaixo, além de algumas pesquisas pessoais, descobri que:
1 - O topque estou usando está contido no pacote procps-3.2.8. O que pode ser verificado usando top -v.
2 - Na versão procps-3.2.8que baixei do site oficial, parece que a ferramenta uptimeobtém suas informações diretamente do procfsarquivo /proc/loadavg(não utilizando a função linux getloadavg()).
3 - Agora, o topcomando também não utiliza a função getloadavg(). Eu consegui verificar se o topfaz realmente as mesmas coisas que ouptimeferramenta para mostrar as médias de carga. Na verdade, ele chama a uptimefunção da ferramenta, que obtém suas informações do procfsarquivo /proc/loadavg.
Então, tudo aponta para o /proc/loadavgarquivo! Assim, para formar um entendimento preciso do load averageproduzido por top, é preciso ler o código do kernel para ver como o arquivo loadavgé gravado.
Há também um excelente artigo apontado em uma das respostas que fornece aos leigos uma explicação dos três valores de loadavg.
Portanto, apesar de todas as respostas terem sido igualmente úteis e úteis, vou marcar a que apontou para o artigo
http://www.linuxjournal.com//article/9001 como "a" resposta para minha pergunta. Obrigado a todos por sua contribuição!
Além da pergunta Noções básicas sobre média superior e de carga , eu encontrei um link para o código fonte do kernel que aponta para o local onde loadavgé calculado. Como parece que há um grande comentário explicando como funciona, também esta parte do código está presente C!
O link para o código é http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Novamente, não estou tentando me envolver em nenhuma forma de plágio, estou apenas adicionando isso para completar. Então, estou repetindo que o link para o código do kernel foi encontrado em uma das respostas em Entendendo a média superior e de carga ...
top -v)