segunda-feira, 4 de outubro de 2010

Linux está pronto para processadores de até 48 núcleos

Para continuar melhorando o desempenho dos computadores, os fabricantes se voltaram para a adição de mais "núcleos", ou unidades de processamento, em cada chip, deixando de lado a antiga corrida pela aceleração pura dos processadores.

Em princípio, um processador com dois núcleos será duas vezes mais rápido do que um processador com apenas um núcleo, um processador com quatro núcleos será quatro vezes mais rápido, e assim por diante.

Para isso, contudo, é necessário dividir as tarefas computacionais para que elas sejam executadas de forma eficiente em vários núcleos.

Fazer programas capazes disso é uma tarefa difícil, e essa dificuldade só aumenta conforme aumenta o número de núcleos.

Muitos especialistas defenderam que, para aproveitar a geração multicore seria necessário reinventar a computação, incluindo reescrever as linguagens de programação e os sistemas operacionais para permitir tirar proveito dos múltiplos núcleos em um único processador.

Linux multicore

Mas um grupo de pesquisadores do MIT, nos Estados Unidos, acaba de demonstrar que pode não ser necessário tal revolução, pelo menos a curto prazo.

Especificamente no caso do sistema operacional Linux, os pesquisadores demonstraram que a arquitetura de software atual poderá sobreviver muito bem a um aumento crescente de núcleos dentro de um mesmo processador - pelo menos até 48 núcleos por processador.

Para ter uma noção de como o Linux poderá rodar nos chips do futuro, os pesquisadores do MIT desenvolveram um sistema no qual oito processadores de seis núcleos simulam o funcionamento e o desempenho de um processador de 48 núcleos.

Usando esta plataforma, eles testaram uma bateria de aplicativos e testes de benchmarking que demandam fortemente o sistema operacional.

Em seguida, eles foram ativando os 48 núcleos, um por um, e observaram as consequências sobre o funcionamento do sistema operacional e sobre o seu desempenho.

Gargalo no contador

Num determinado ponto, a adição de mais núcleos começou a tornar o sistema operacional mais lento.

Mas, segundo os pesquisadores, o problema teve uma explicação surpreendentemente simples e pôde ser resolvido igualmente sem complicações.

Em um sistema multicore, os múltiplos núcleos muitas vezes executam cálculos que envolvem os mesmos dados. Enquanto os dados são necessários para algum núcleo, eles não podem ser apagados da memória. Assim, quando um núcleo começa a trabalhar com os dados, ele incrementa um contador central; quando ele termina a sua tarefa, ele decrementa o contador.

O contador, portanto, mantém uma contagem do número total de núcleos usando os dados. Quando a contagem chega a zero, o sistema operacional fica sabendo que pode apagar os dados, liberando memória para outros processos.

Conforme aumenta o número de núcleos, contudo, tarefas que dependem dos mesmos dados são divididas em pedaços cada vez menores. Os pesquisadores do MIT descobriram que, a partir daí, os núcleos começam a gastar tempo demais incrementando e decrementando o contador e acabam tendo menos tempo para realizar seu trabalho.

Depois de fazer uma alteração simples no código do Linux, para que cada núcleo mantivesse um contador local, que apenas ocasionalmente era sincronizado com o contador dos outros núcleos, o desempenho geral do sistema melhorou muito, e o acréscimo de núcleos voltou a melhorar o rendimento total do sistema.

Evolução em lugar de revolução

No futuro, se o número de núcleos em um processador for "significativamente maior do que 48", novas arquiteturas e sistemas operacionais poderão tornar-se necessários.

Para os próximos anos, argumentam os pesquisadores, o experimento mostra que um dos principais sistemas operacionais do mercado está pronto para continuar usufruindo dos progressos do hardware sem exigir uma revolução na área do software. A evolução será suficiente.

Contudo, apesar do problema com o contador de referência ter sido fácil de consertar, ele não foi nada fácil de identificar.

"Há um bocado de pesquisa interessante a ser feita na construção de ferramentas melhores para ajudar os programadores a identificar onde está o problema", afirmou Frans Kaashoek, um dos autores do estudo. "Nós escrevemos um monte de pequenas ferramentas para nos ajudar a descobrir o que estava acontecendo, mas nós gostaríamos de tornar o processo muito mais automatizado."

Nenhum comentário: