Corey An Operating System for Many Cores
Corey: An Operating System for Many Cores
Rafael L. Azzi1, Wagner Doering1, Tiago L. Steil1
1
Instituto de Ciências Exatas e Tecnológicas – Universidade FEEVALE
{rafael.azzi, wagner.doering, tiago.steil}@gmail.com
Resumo. O desempenho dos aplicativos multiprocessador pode ser limitado pelo sistema operacional quando o aplicativo usa o sistema operacional com frequência, e os serviços do sistema operacional usam estruturas de dados compartilhadas e modificadas por múltiplos núcleos de processamento. Se o aplicativo não precisa do compartilhamento, logo, o sistema operacional vai se tornar um gargalo desnecessário para o desempenho do aplicativo.
Este artigo argumenta que as aplicações devem controlar o compartilhamento: o kernel deve organizar cada estrutura de dados de modo que apenas um único processador precise atualizá-lo, a menos que indicado de outra forma pela aplicação. Guiado por este princípio, o artigo propõe três abstrações do sistema operacional (intervalos de endereços, núcleos do kernel e compartilhamentos) que permitem que aplicativos controlem o compartilhamento interno dos núcleos e provavelmente aproveitem a abundância de núcleos, dedicando núcleos para funções específicas do sistema operacional.
Introdução
Coerência de cache com memória compartilhada em hardware de multiprocessadores tornou-se o padrão em PCs modernos, com isso os produtores de chip adotaram arquiteturas de múltiplos núcleos. Chips com quatro núcleos são comuns, e as tendências sugerem que os chips com dezenas a centenas de núcleos apareceram dentro de poucos anos. Este artigo explora novas implementações de sistemas operacionais que permitem que aplicativos evitem gargalos no sistema operacional com o número de núcleos aumentado.
Serviços do sistema operacional, cujo desempenho está mal escalonado para o número de núcleos pode dominar o desempenho da aplicação. O artigo cita pesquisas que mostram que a disputa para as filas de processos no Linux pode