Jorge Godoy escreveu:
> Em Monday 17 December 2007 11:48:34 Junior Polegato - Linux escreveu:
>   
>> Essa é nova! Se eu tiver numa máquina com dois processadores e três
>> processos exigindo 100% de CPU e com mesma prioridade, dois vão ficar
>> numa CPU e um na outra? Não, felizmente não. Pegue uma máquina com dois
>>     
> E onde você leu algo para fazer essa afirmação?
>   
>> processadores e crie três processos que exijam 100% de CPU (em c = while
>> true;  ou em shell = while true; do echo > /dev/null; done) e com o top
>> verá que cada processo tem praticamente o mesmo percentual acima de 65%
>> de uso das CPUs e praticamente 0% de CPUs ociosas, sendo impossível eles
>> não trocarem de CPU. Estamos falando da mesma coisa, preempção?
>>     
> E veja que um processo uma vez alocado na CPU0 ou na CPU1 não muda para a 
> outra, como eu disse.
> Não sei de onde você tirou o que afirmou acima...
>   
Olá,

    Desculpe meu colega Godoy, mas qualquer documentação sobre o kernel 
traz essa informação. Nos da série 2.4 havia uma lista de tarefas e a 
cada preempção (expirado tempo de CPU que o kernel atribui a uma tarefa 
ou a tarefa dorme esperando alguma resposta) o processo no topo da lista 
era alocado para a CPU ociosa, assim um processo mudava de processador 
de forma bastante notável. Com o 2.6 já temos uma lista de tarefas por 
processador, o que garante maior escalabilidade e que um processo 
continue mais tempo no mesmo processador, mas o processo pode mudar de 
processador, notado que com esse novo algoritmo a CPU0 geralmente será a 
mais ociosa.

    Como sabemos que uma imagem vale mais que mil palavras, usando o 
gkrellm, iniciei um processo (while true; do echo > /dev/null; done), 
dei um tempo para observá-lo mudar de processador, onde fez algumas 
mudanças muito rápidas. Mudei ele para prioridade 1, sendo bem dizer o 
único com prioridade diferente de zero no sistema, para ficar em verde 
no gkrellm e podermos acompanhá-lo melhor mudar de processador. Depois 
ainda iniciei outro processo igual para ver a alternância entre os dois 
processos e os dois processadores:


[EMAIL PROTECTED]:~$ while true; do echo > /dev/null; done &
[1] 22947

[EMAIL PROTECTED]:~$ renice 1 22947
22947: prioridade antiga = 0; prioridade nova = 1

[EMAIL PROTECTED]:~$ while true; do echo > /dev/null; done &
[2] 23964

[EMAIL PROTECTED]:~$ kill 23964

Imagem: www.juniorpolegato.com.br/processadores.jpg


    Espero que com isso agora a gente se dê por entendidos. Ainda há 
algo para que não se encaixou?

-- 
Atenciosamente,

           Junior Polegato

           Um peregrino de problemas; Um pergaminho de soluções!
           Página Profissional: http://www.juniorpolegato.com.br

---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a