[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: RES: Performance Debian



Respondendo p/ a lista - p/ contribuir com o histórico; não temos muitas dessas discussões por aqui.

Jeronimo Bezerra schrieb:
Olá Marcos, obrigado pela informação.

Com o parâmetro informado o tempo total caiu de 16m55s para 6m29s.
Eu acreditava que o kernel SMP fazia isso automaticamente, mas vi que não.

O kernel faz sim, quem não faz é o make. Se vc colocasse outras 2 ou 3 instâncias de compilação do kernel nessa hora, vc iria observar tempos de compilação muito próximos de todos, e não um aumento generalizado como num sistema com uma unica CPU - evidenciando uma característica dos programas de hoje em dia de lidar com apenas uma CPU (mais sobre isso abaixo).


Você saberia dizer o que acontecerá por padrão quando eu instalar o Apache
por exemplo? Vai usar os 4 processadores ou terei que fazer alguma
adaptação?

Rapaz, eu não saberia dizer... mas acho que as outras coisas se adaptam melhor (ou pior).

O problema com compilações é que elas são muito 'CPU-intensive'. Pra não entupir sua memória de CPU com processos desnecessários, o make limita a concorrencia da coisa. Como a maioria absoluta das máquinas é mono-processada, esse limite vem em 1.


No caso do apache, cada requisição é atendida por um processo, então eu acho que acaba não atrapalhando tanto. Mas acho que o uso de CPU do apache não é tão grande, a não ser que vc tenha bastante SSL + PHP + MYSQL + CGI + outras coisas... me parece que o apache em geral sofre mais com operações de I/O do que CPU.

Outro exemplo: se vc instalar um programa p/ converter wav em mp3, provavelmente terá que habilitar a funcionalidade de multi-cpu, isso se ele suportar. Converter um video de um formato para outro? Renderização em 3D? Até mesmo um joguinho sofre do mesmo problema - para que um programa específico passem realmente a se beneficiar de um sistema multi-processado, seu algoritmo precisa ser reescrito de modo a tirar vantagens dessa caracterísitca. Paralelismo, distribuição, concorrência, etc são coisas ainda bastante nebulosas/antagônicas quando são necessários ferramentas tipo lock, centralização, sincronização... sem contar que é infinitamente mais difícil debugar um programa que roda de maneira distribuida.


Se você roda várias coisas ao mesmo tempo, o sistema se encarrega de distribuí-las, mesmo sendo coisas 'monolíticas'. Mas se vc quer que todos trabalhem em conjunto p/ resolver o mesmo problema, a coisa precisa ser retrabalhada. (no caso do make é fácil, pois a compilação de programas envolve muitos passos menores com pouca dependencia entre si - ai basta ir disparando um processo em cada canto que é liberado e pronto).


Espero ter ajudado e não piorado :-)

--
Marcos



Reply to: