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

Re: swap é mesmo necessário?



Voltando...

Datacom - Tavares wrote:
On Tue, 2005-10-11 at 23:17 -0300, Marcos Lazarini wrote:

E tem um problema, se voce habilitar na Bios o HT e usar um kernel nao
SMP ou um windows 98 sem suporte a SMP, o sistema ficará instavel..

Isso eu já nao sei não, veja os e-mails do Francisco que iniciou a thread - ele usava um HT com kernel 2.4 não smp. E só comecou a travar depois que comecou a brincar com essas coisas.

Partindo do principio q se vc tiver 2 cores e um kernel nao SMP, somente
o core 1 serah usado, com HT o mesmo pode ocorrer, correto? Nao
aproveitando o hardware do sistema de forma plena e deixando parte
processador ocioso..

Isso é instavel? Veja o que voce mesmo falou acima

Acredito que o ganho de desempenho eh baixo nos computadores com
windows, onde a maioria dos benchmarks "comerciais" executam.
O windows nao faz um bom proveito do paralelismo, ao contrario do que
acontece com o linux.. Isso quer dizer, o ganho do HT no linux eh
significativo :)

Isso eu discordo... e bastante.
Primeiro, pq os benchmarks comerciais iriam fazer o windows rodar mais devagar? Segundo, não dá pra ver o código do windows pra ver se ele realmente implementa de maneira eficiente. Só da pra especular. Ai a comparação fica complicada, mas podemos tentar dentro de certos parâmetros. E outra coisa: uma coisa é o sistema operacional suportar multiplas CPUs; outra coisa completamente diferente é seus aplicativos tirarem proveito delas.... E isso eu não sei como anda nem no linux, nem windows.

Defensor de windows? :)
Benchmark comercial fechado eh desconsideravel pois ele pode ter uma
implementacao q beneficiaria um ou outro caso.. Nao temos como saber.

Eu nao disse em momento algum q os benchmarks fariam o windows rodar
mais devagar, acho q fui mal interpretado. Na verdade, nenhum programa
em sua natureza, poder fazer um OS "rodar mais devagar". Timesharing
existe! :) Os conceitos de OS detalham isso..

O q quis dizer eh q os benchmarks executados sao todos para windows e q
no windows nao temos um ganho com o uso de HT tao grande quanto temos no
linux..

Qual o critério que vc usou pra chegar nessa conclusão? Achometro? Se o critério foi numero de processos/threads rodando ao mesmo vc está enganado...

e q os benchmarks deveriam ser executado sobre linux para
podermos comparar um HT com um nao HT pois o ambiente de trabalho no
linux tem uma natureza mais paralelizavel.

Sim, nao podemos ver o codigo do windows, mas podemos ver os tamanhos
dos binarios em execucao e a sua quantidade (pequena) para executar uma
determinada tarefa. Quando comparado com o linux temos muito mais
programas (threads) em paralelo e estes sao equivalentes aos grandes
binarios do windows (mesma tarefa) soh q partidos em pedacos menores
resultando numa maior quantidade de pequenos programas em execucao (mais
paralelizavel), fui claro? Talvez nao..

Ninguem disse q eles podem ser executados simultaneamente em CPUs diferentes; os mesmos conceitos de SO que vc cita acima também mencionam Locks, Semáforos, etc. Outra coisa, nao entendi a questão do tamanho ai em cima - já compilou alguma coisa com -O3? Fica gigante e super-rápido. Seguindo pelo seu raciocinio, o linux deveria ser mais lento que o windows, pois haveria mais troca de contexto entre as muitas coisas que ele roda (e toda troca de contexto/interrupcao é péssimo pra performance)


Percebi isso verificando no winXP que mesmo possuindo 2 processadores,
ao disparar um programa, era praticamente usado somente um deles.

E no linux? Fez o mesmo?
Tentou carregar um programa multi-thread no windows pra ver a diferença?


Nao.. Ele paraleliza ok..
Sim, mas mesmo assim, os programas pra windows nao implementam muitas
threads, mas percebe-se elas executando em paralelo..

???


Um bom teste: pegue um crack de qquer coisa (.doc, .zip, passwd, etc); em geral eles não são multi-threaded pois não é tão facil paralelizar essa tarefa.

Jah fiz o teste usando um encoder MPEG 1 sem multi-thread..


No micro HT, coloque no windows e veja se vai gastar 100% de CPU; depois repita no linux. Eu diria que fatalmente ambos vão parar em 50%. E ai? quem é o mais rápido?

Essa nao é a questao.. A questao eh quantas threads tens executando num
windows para realizar uma tarefa e quantas tens no linux para executar a
mesma tarefa..

Eu não queria entrar no mérito, mas acho que não tem jeito.
processo é diferente de thread, e eu acho que você está confundindo. Não sou expert no assunto [e o guru mais próximo está bem longe], mas vamos lá:

ao fazer um 'ps' ou olhar no 'task manager' vc lista os processos, nao as threads. As threads são sub-divisões dos processos, e correm por dentro deles. Paralelizar vários processos é 'facilmente' feito pelo escalonador do SO, a custa de locks, semaforos, etc. Paralelizar um processo, utilizando várias threads é em geral complicado, pois afeta diretamente o algoritmo escolhido e exige formulação das estratégias adequadas.

A minha duvida reside no fato do que é mais fácil de acontecer: por dois processos pra rodar ao mesmo tempo, ou fatiar um processo e colocar as threads pra rodar separadas? E em qual caso vc tem ganho de velocidade de execução maior?


Exemplo: Ao carregar o windows tens bem poucas threads gerenciando todo
o ambiente grafico.
No linux, o ambiente grafico se resume a um grande conjunto de
programas, por exemplo, gerenciador de janelas, font-server, desktop,
painel, etc, etc, etc, e cada um com suas n threads.. entende agora o q
quis dizer?

A natureza do linux eh muito mais paralelizavel do q a do windows,
portanto uma maquina com linux com HT teria um ganho bem maior em
comparacao a uma sem HT do q se compararmos a uma maquina com windows
com HT e sem HT. Fui claro agora na minha explicacao? :)

Agora tá entendido o seu conceito, só não sei se há relação direta com o numero de processos (ou threads) rodando com a capacidade de paralelização como vc assume (e consequente ganho de velocidade).

Não é fácil trabalhar com algoritmos distribuidos... muitos conceitos naturais do sistema centralizado simplesmente não existem mais; surgem algoritmos de eleição, concenso, problemas com lock, etc.

Dois livros [pesados] que usamos na faculdade:
Nancy Lynch, "Distributed Algorithms"
Couloris et al, "Distributed Systems: Concepts and Design"
(esse último é bem xarope)
Se tiver um tempo e interesse (vi que vc é cientista da computação), de uma olhada nos livros, o assunto é muito interessante.

--
Marcos



Reply to: