Durante que tipos de operações é considerado um processo para a 'média de carga'?

1

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:

  1. O processo está funcionando em uma CPU.
  2. O processo poderia estar funcionando imediatamente, mas não há CPUs gratuitas.
  3. O processo está aguardando que algo aconteça dentro ou fora do sistema.

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:

  1. Chamando sleep() .
  2. Chamando read() em um arquivo aberto que não está no cache.
  3. Chamando read() em um canal no qual ninguém está escrevendo nada.
  4. Chamando accept() em um soquete de rede.
  5. Chamando send() em um soquete de rede com um buffer completo.
  6. Tentando acessar a memória privada que foi trocada para o disco.
  7. Tentando acessar um arquivo de memória mapeada que não está no cache e precisa ser carregado do disco ou de um sistema de arquivos de rede.
  8. Sendo infeliz o suficiente para pular para um pedaço de código que ainda não foi carregado na memória.

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?

Notas de rodapé

[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!

    
por Feuermurmel 25.05.2018 / 14:16

0 respostas