Em 20 de março de 2011 13:57, Paulo Henrique BSD Brasil <paulo.rd...@bsd.com.br> escreveu: > Em 20/3/2011 10:59, Cleyton Agapito escreveu: >> Em 20 de março de 2011 04:31, Paulo Henrique BSD Brasil >> <paulo.rd...@bsd.com.br> escreveu: >>> Saudações a todos da lista, >>> Recentemente passei a avaliar o real impacto na performance de um >>> sistema multi-thread quando apenas parte dos software executados no >>> mesmo são single-thread. >>> Contudo nas pesquisas que executei a documentação quanto a software >>> multi-thread em si é grande porem o software single-thread sobre >>> plataformas de OS multi-thread é quase inexistente. >>> Por acaso algum companheiro dispõem de informações, referencias quanto a >>> esse problema, se é que pode ser considerado um problema ? >>> >> Se servir um palpite, o "problema" fica apenas restrito ao programa >> que só pode fazer uma coisa de cada vez, tipo abre uma janela e o >> resto "congela". No SO não tem impacto já que ele troca o carinha de >> contexto e vai fazer outra coisa. Não sei se as threads recebem >> prioridade diferentes, mas caso recebam o problema continuarestrito ao >> software que vai acabar rodando mais devagar por receber menos atenção >> do SO. >> >> Agora, se o software estiver em área de núcleo "kernel", em sistemas >> monolíticos (na prática quase todos) aí sim tem impacto, enquanto o SO >> está nesta tarefa ele não faz mais nada (lags e congelamentos >> temporários). >> >> Se falei alguma bobagem por favor me corrijam, espero ter ajudado. >> >> []'s >> ------------------------- >> Histórico: http://www.fug.com.br/historico/html/freebsd/ >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > Mais ainda assim tem um impacto de performance se o software > single-thread for parte de um dos software da solução onde todos os > demais softwares são multi-thread mais depende de tarefas dos software > single-thread, ou estou enganado, não haveria no caso um gargalo > originado nas tarefas de responsabilidade do software single-thread ? > Bibliotecas single-thread não atrapalha o desempenho dos software > multi-threads, ou são criado instâncias de execução distintas entre cada > thread do software multi-thread para lidar com as funções single-thread > da biblioteca ? >
Até onde eu sei (e não é muito, diga-se de passagem) thread cria filhotes (forks) da -mesma tarefa- que vc está executando, em algum momento alguém vai ter que pegar as peças e juntar novamente, não tem milagre e não é trivial, na maior parte das vezes o conjunto deve aguardar a finalização de todos os pedaços (sincronização) para concluir a execução. Entre um processo e outro depende de como são tratadas as entradas e saídas, pode ser que um single vá gerando saída a medida que vai executando e um multi fique aguardando o sincronismo e não gere saída nenhuma, neste caso teríamos a sensação de que o primeiro roda mais depressa. Vai depender de cada caso. Na prática quem tira proveito das threads são sistemas com mais de um processador e clusters porque vc consegue dividir melhor as tarefas menores entre eles, sistemas monoprocessados (como o meu) tem um desempenho menor devido ao overhead que esse tratamento causa, não adianta dividir em tarefas menores se é sempre o mesmo processador que vai executar todas elas... Abração. ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd