Em geral, estou tentando entender os números exibidos por uptime
(e vários comandos oder):
$ uptime
13:40:52 up 18 days, 2:10, 8 users, load average: 0.20, 0.30, 0.64
Aqui, a média de carga do meu sistema para o intervalo anterior de um minuto foi 0,2 . Em um nível muito alto, esse número está me dizendo que, em média, durante o período de amostragem, processos 0,2 foram considerados como produzindo carga para o sistema [2].
Eu entendo que um processo pode estar em muitos estados diferentes. Mas eu só tenho uma compreensão firme para 3 estados principais:
Eu acho que o último estado é aquele a ser analisado mais de perto, porque tenho certeza de que os processos nos dois primeiros estados são sempre contados para o carregamento do sistema. Posso imaginar algumas coisas que um sistema pode fazer para chegar ao último estado:
sleep()
. read()
em um arquivo aberto que não está no cache. read()
em um canal no qual ninguém está escrevendo nada. accept()
em um soquete de rede. send()
em um soquete de rede com um buffer completo. Eu li esta resposta e alguns outros recursos na internet e vi os termos estado ininterrupto e suspensão ininterrupta algumas vezes e que os processos em tal estado também são contados. Então, estou assumindo que isso incluiria alguns dos estados acima, mas quais? Definitivamente não todos eles.
Então, minha pergunta principal é, quando exatamente é um processo contado para o carregamento do sistema?
[1]: por exemplo. de 1000 amostras, 200 vezes um único processo [2] foi contado enquanto o outro 800 vezes nenhum foi contado. Ou 200 processos foram contados uma vez, enquanto nenhum foi contado os outros 999 vezes. Eu entendo isso.
[2]: Estou usando process e thread alternadamente aqui porque, no meu entender, do ponto de vista do agendador, eles não parecem diferente. Para a interpretação da minha pergunta, suponha que estou falando de um sistema em que todo processo tem exatamente um segmento. Se houver diferenças interessantes ao analisar processos com vários segmentos, observe-os!
Tags linux scheduling load-average