Smp - Kernel 2.6

download Smp - Kernel 2.6

of 7

Transcript of Smp - Kernel 2.6

Suporte a Multiprocessadores Simtricos (SMP) em kernel LinuxAndr Lus Fvero [email protected] Universidade Federal do Rio Grande do Sul Instituto de Informtica CMP134 Introduo ao Processamento Paralelo e Distribudo

Introduo Atravs da necessidade de criao de formas mais rpidas de processamento, as tecnologias tm caminhado para utilizao de tcnicas de paralelismo. O conceito de aumentar a velocidade de execuo de um programa dividindo-o em fragmentos e executando em diferentes processadores cada fragmento de forma simultnea uma forma de utilizar paralelismo. Este trabalho visa abordar um dos tipos de Processamento Paralelo que pode ser realizado em mquinas cujo sistema operacional seja Linux. O enfoque ser direcionado a SMP (Symmetric Multi-Processor ou multi processadores simtrico), aonde, nesta arquitetura, um grupo de processadores trabalha conjuntamente, compartilhando uma nica memria atravs de um barramento nico; sendo possvel para qualquer um deles executar uma parte do programa. Neste sistema, o barramento de memria o eixo de simetria entre os processadores. Assim, nenhum poder acessar diretamente a uma memria ou a um dispositivo de entrada/sada. Outra das caractersticas do SMP ter memria compartilhada nativamente, ao contrrio dos clusters, que emulam ao nvel aplicacional. O Multiprocessamento simtrico trata todos os processadores de forma igual. Qualquer processador pode fazer o trabalho de qualquer outro processador e as aplicaes so divididas em correntes que podem rodar concorrentemente em qualquer processador disponvel. O SMP melhora o desempenho da prpria aplicao, como tambm o processamento total do sistema. Os sistemas SMP requerem alguma forma de memria compartilhada e caches de instruo locais, mas, mais importante, sistemas de SMP requerem aplicaes que podem tirar proveito do paralelismo. Arquitetura Um SMP pode ser definido como um sistema computacional com as seguintes caractersticas: - existem dois ou mais processadores similares de capacidade comparvel; - os processadores compartilham uma mesma memria principal e facilidades de entrada/sada, e interconectados por um nico barramento, de tal forma que o tempo de acesso memria seja compatvel com o tempo de operao dos processadores;

- todos os processadores podem realizar as mesmas funes, da o termo simtrico; - o sistema controlado por um sistema operacional integrado que prov interao entre os processadores e seus programas, ao nvel de servios, tarefas, arquivos, e elementos de dados. Vantagens de uma arquitetura SMP sobre monoprocessadores: - Desempenho se um determinado processamento pode ser compartilhado entre vrios processadores, em paralelo, ento o sistema SMP deve ter um desempenho melhor que um monoprocessador, ao executar o mesmo processamento; - Disponibilidade num sistema simtrico, devido a todos os processadores desempenharem as mesmas funes, a falha de um processador no deve parar a mquina. O sistema pode continuar funcionando num desempenho reduzido; - Crescimento incremental um usurio pode melhorar o desempenho de um sistema SMP adicionando um processador; - Escalabilidade um fornecedor pode oferecer uma faixa de produtos com diferentes preos e desempenhos baseado no nmero de processadores, que constitui o sistema. Um fator atrativo para um SMP que a existncia de mltiplos processadores transparente ao usurio. O sistema operacional cuida do escalonamento dos threads ou processos para os processadores e da sincronizao entre os processadores. Organizao dos SMPs Num SMP cada processador completo, contendo a unidade de controle e unidade de processamento com ALU, registradores, e cache. Cada processador faz acesso a uma memria principal compartilhada (shared main memory) e a dispositivos de entrada/sada atravs de um mecanismo de interconexo. Os processadores se comunicam entre si atravs da memria (mensagens e informaes de status deixadas em rea comum de dados). A memria normalmente organizada tal que acessos simultneos a mdulos distintos sejam possveis. Em certas configuraes, cada processador pode tambm ter a sua memria privada prpria e canais de entrada/sada privados, alm dos recursos compartilhados.

Figura 1 Arquitetura SMP Na arquitetura SMP o tempo para o acesso aos dados na memria o mesmo para todos os processadores a para todas as posies da memria. A forma de interconexo mais

comum neste tipo de mquina o barramento e a memria geralmente implementada com um nico mdulo. O principal problema com este tipo de arranjo que o barramento e a memria tornam-se gargalos para o sistema, que fica limitado a uma nica transferncia por vez. Memrias do tipo cache junto aos processadores so utilizadas para diminuir a latncia no acesso memria principal e para diminuir o trfego no barramento. Como vrias cpias de um mesmo dado podem ser manipuladas simultaneamente nas caches de vrios processadores, necessrio que se garanta que os processadores sempre acessem a cpia mais recente. Esta garantia chamada de coerncia de cache (cache coherence), implementada geralmente diretamente em hardware. Um dos protocolos de coerncia de cache mais populares chamado de snooping. Neste caso, quando uma dado compartilhado por vrias caches alterado por algum processador, todas as demais cpias so invalidadas ou ento atualizadas. Apesar de arquiteturas SMP existirem a muitos anos, at a pouco tempo cada um dos sistemas implementava funes bsicas diferentes, o que impedia que os sistemas operacionais fossem portveis. Este fenmeno alterou-se com o lanamento do MPS (Intel's Multiprocessor Specification). Isto naturalmente contribuiu a representatividade da Intel no mercado de processadores. A figura 2, demonstra a arquitetura MPS.

Figura 2 Arquitetura SMP[Intel]

Suporte SMP em kernel Linux Linux tem suporte a mquinas SMP desde o kernel srie 2.0. Entretanto nas novas sries 2.4 e principalmente na 2.6, as equipes de desenvolvimento melhoraram de forma significativa esta caracterstica do sistema operacional. Atualmente as arquiteturas cuja Linux possui suporte a SMP so Alpha, PowerPC, Sun4d, Ultrasparc, e arquiteturas i386 compatveis com a MPS 1.1 e 1.4 (Intel's Multiprocessor Specification).

Para que o kernel Linux suporte processadores simtricos necessario ativar essa caracterstica durante a compilao de um novo kernel Linux. Atualmente na srie 2.6, so suportados at 64 processadores simtricos. Um ponto muito importante, para sistemas SMP tambm o escalonamento das instrues. No kernel 2.6, o escalonador foi reescrito com a inteno de resolver alguns problemas encontrados no antigo escalonador. No kernel 2.4 o escalonador era simples. O escalonamento de tarefas para os processadores era feito a partir de uma nica lista de instrues (figura 3). O algoritmo para busca de instrues funciona da seguinte forma:

Para (cada processo no sistema) { ache o valor de merecimento do processo Se (esse o processo com maior merecimento) { Lembre-se dele } } Rode o processo com maior merecimento Ou seja, com base em alguns critrios de prioridade, para se obter a tarefa a ser executada o escalonador deveria ler toda lista em procura da tarefa com maior prioridade. Os critrios de prioridade so:

Ciclos de clock CPU afinidade ( possvel determinar que um tarefa expecfica seja executada em um determinado processador) User-set prioridade (prioridade para aquela tarefa, definida pelo usurio) Tarefas de tempo-real (tarefas com alta prioridade)

Entretanto, a prpria simplicidade do escalonador em fazer uso de uma nica lista de tarefas traz algumas desvantagens como:

Existe um nico spinlock de read/write tende a se tornar num ponto de disputa Necessidade de avaliar toda a fila para buscar instrues Longo tempo para adquirir lock exclusivo para marcar tarefa que escolheu para executar Outros processadores podem escolher mesma tarefa, necessitando ento que se os processadores que tenham escolhido uma tarefa j escolhida por outro, abandonem esta tarefa e faam uma nova busca na lista de tarefas.

Com o intuito de resolver estas desvantagens, o escalonador do kernel da srie 2.6 possui diferenas importantes (figura 4).

Figura 4 escalonador kernel 2.6

Figura 3 escalonador kernel 2.4

A idia no kernel 2.6 que o tempo de seleo de tarefa seja sempre constante. Com isso a poltica utilizada visa criar uma lista FIFO de instrues j ordenadas para cada processador. Com isso, as tarefas j so ordenadas na fila apropriada conforme a prioridade para tal instruo. Para cada processador existem 140 prioridades possveis e uma fila para cada prioridade com as instrues j ordenadas nesta fila. Esta poltica torna simples e constante a tarefa de selecionar a instruo a ser executada. O algoritmo para este escalonador descrito a seguir: V para a fila com maior prioridade Pegue o primeiro processo nessa fila Rode esse processo

Testes de performance do escalonador Segundo artigo da Open Source Development Labs, aonde o objetivo comparar a velocidade dos escalonadores das series 2.4 e 2.6 atravs do software chamado hachbench. O software utiliza processos cliente e servidor agrupados para mandar e receber dados em ordem, com o objetivo de simular um chat, onde um cliente envia uma mensagem para cada servidor do grupo. O teste cria grupos mltiplos de 25 processos. Cada cliente escreve 100 mensagens para os servidores, totalizando 100 x Nmero de processesos de mensagens.Com isso o hackbench verifica o estado do escalonador. Os grficos abaixo figura 5,6 apresentam os resultados obtidos. Nestes grficos fica claro a maior escalabilidade do kernel 2.6, comprovando que as desvantagens do escalonador da srie 2.4 foram superadas nesta nova verso. Segundo os desenvolvedores o objetivo para as novas verses diminuir ainda mais o tempo gasto pelo processador escalonando processos e prover um melhor espalhamento das instrues, mantendo ento a carga bem espalhada pelos processadores evitando a ociosidade.

Figura 5 Grafico de performance do escalonador em kernel 2.4.18

Figura 6 Grfico de performance do escalonador em kernel 2.6.0-test9

Concluso Pelo fato das arquiteturas SMP no serem to caras, montadas mltiplos processadores, conhecidos como de prateleira, notvel o avano que esta arquitetura de mquinas tem obtido no mercado, notvel; tambm as vantagens providas principalmente pelo paralelismo que este tipo de arquitetura oferece, em relao a mquinas monoprocessadas. Com isso, existe tambm a necessidade do software, e na abordagem deste trabalho o sistema operacional, acompanha a evoluo, fornecendo o suporte adequado de modo que todos os recursos disponveis na arquitetura possam ser utilizados. No caso do kernel Linux, o suporte a este tipo de arquitetura e bem contemplado, entretando avanos quanto ao escalonador, suporte a threads POSIX entre outros esto sendo avaliados para prximas verses. claro o interesse dos desenvolvedores em em avanar nesta rea, uma vez que Linux vem sendo adotado em arquiteturas de grande porte. Bibliografia Open Source Development Labs, Inc., Linux Process Scheduler Improvements in Version 2.6.0, Disponvel em http://developer.osdl.org/craiger/hackbench/. Acesso em abril 2004. Rick Lindsley, What's New in the 2.6 Scheduler, Disponvel em http://www.linuxjournal.com/article.php?sid=7178. Acesso em abril 2004. Enkh Tumenbayar, Linux SMP HOWTO. Disponvel em http://www.tldp.org/HOWTO/SMP-HOWTO.html. Acesso em abril 2004. Hank Dietz, Linux Parallel Processing HOWTO, Disponvel em http://www.tldp.org/HOWTO/Parallel-Processing-HOWTO.html. Acesso em abril 2004. Intel Corporation, MultiProcessor Specification,Version 1.4 May 1997.