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 top
comando 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 top
na 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 top
in RHEL
ou in online ubuntu documentation
e 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 top
relacionado ao RHEL por aí! o builtin-top.c
e 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 top
que 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.8
que baixei do site oficial, parece que a ferramenta uptime
obtém suas informações diretamente do procfs
arquivo /proc/loadavg
(não utilizando a função linux getloadavg()
).
3 - Agora, o top
comando também não utiliza a função getloadavg()
. Eu consegui verificar se o top
faz realmente as mesmas coisas que ouptime
ferramenta para mostrar as médias de carga. Na verdade, ele chama a uptime
função da ferramenta, que obtém suas informações do procfs
arquivo /proc/loadavg
.
Então, tudo aponta para o /proc/loadavg
arquivo! Assim, para formar um entendimento preciso do load average
produzido 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
)