• Nenhum resultado encontrado

A Tabela 6.14 descreve a quantidade dos principais recursos utilizados pelo escalonador heterogêneo implementado em FPGA. Como exemplo de compa- ração, também está descrito a quantidade de recursos utilizados por um dos processadores da Arquitetura 1.

Tabela 6.14: Utilização de recursos de hardware

Recurso Slices Slice REG LUTs LUTRAM BRAM DSP48 Arquitetura 1 CPU1 6835 7027 17108 132 8 16 Escalonador heterogêneo Monitor de desempenho 314 568 1083 0 0 0 Módulo de escalonamento 1376 1919 2793 8 8 0 Algoritmo Hungarian 445 700 1117 0 13 0 Total 2135 3187 4993 8 21 0

Pode-se notar, que o escalonador ocupa cerca de um terço dos recursos gastos com o processador. Apesar de ser uma quantidade alta de recursos, essa quantidade pode ser diminuida, pois existem muitos módulos de depu- ração implementados.

Para mensurar o consumo de energia adicionado pelo módulo do escalona- dor, foi utilizada a ferramenta XPower Analyzer, a qual realiza uma estimativa do consumo de energina na FPGA de acordo com a arquitetura implementada (Xilinx, 2013b). Os seguintes valores foram estimados:

• Sem o escalonador heterogêneo: 4.58W; e • Com o escalonador heterogêneo: 4.70W

6.9 Considerações finais

Neste capítulo, o escalonador heterogêneo, especificamente a projeção de desempenho, foi avaliado por meio da execução de diversos benchmarks para- lelamente. Para isso, foram utilizadas 4 arquiteturas distintas contendo dois processadores com o objetivo de demonstrar a versatilidade do algoritmo em meio a diferentes configurações de arquiteturas e processos. Por meio da aná- lise dos resultados, a maioria dos benchmarks obteve um elevado desempenho quando executados sobre dois processadores, com pequenas diferenças de ar- quitetura entre si. É importante ressaltar que na avalição de benchmarks uni- tários, quatro cópias do mesmo processo executavam simultaneamente. Con- siderando que a projeção provavelmente apontou o mesmo processador para todos os processos, esse fato ocasionou em alguns casos a migração de todos esses processos para esse mesmo processador, aumentando a probabilidade de faltas na cache de dados. Apesar desse fato, nos resultados da heurística, o algoritmo de escalonamento conseguiu extrair até 41% de desempenho, o que demonstra que outros recursos do processador podem ser mais importantes que a cache, sendo essa importância diagnosticada pela sua análise em tempo real para cada processo em execução.

Com o balanceamento por meio do algoritmo Hungarian, foi possível dimi- nuir o tempo de processamento de todas os grupos de benchmarks, chegando a melhorar o desempenho em até 7.82% em relação ao escalonador sem o suporte à heterogeneidade de processadores.

Esses resultados alimentam a importância de um escalonador específico para arquiteturas heterogêneas visando a extração de maior desempenho das aplicações.

CAPÍTULO

7

Conclusões

A utilização de arquiteturas com processadores de diferentes especificida- des consiste em uma tendência atual no mercado. Em um ambiente genérico com processadores heterogêneos, devido a variedade de recursos exigidos por cada processo, assim como a variação das fases de um mesmo processo em seu tempo de execução, torna complexa a tarefa de mapear suas necessi- dades ao encontro dos processadores que lhe ofereçam maior desempenho. Nesse sentido, muitas pesquisas foram propostas em relação a designação de processos diretamente para os melhores processadores, provando que um mapeamento eficiente aumenta o desempenho do sistema. No entanto, grande parte dessas pesquisas é realizada em um ambiente controlado, com mapea- mento estático, o que não aplicável em um ambiente genérico.

Em busca de melhorar o desempenho dos processos em uma arquitetura multiprocessada heterogêna, este trabalho apresentou a arquitetura de um escalonador heterogêneo que determina em tempo real as projeções de de- sempenho de qualquer processo em execução para todos os processadores da arquitetura. Por meio dessa projeção os processos são migrados para os processadores que possuem os recursos mais adequados a cada processo, fa- zendo com que os tempos efetivos de execução para esses processos sejam reduzidos. A implementação da arquitetura do escalonador foi particionada em hardware e software. O processador SPARC V8 Leon3 foi modificado para a adição de um monitor de desempenho, por meio do qual o escalonador tem conhecimento do comportamento atual do processo. Por meio desse compor- tamento são calculadas as projeções do processo para todos os processadores. Essas projeções chegam até o sistema operacional Linux, o qual por meio do suporte ao escalonador heterogêneo aplicado ao escalonador CFS, realiza as

migrações dos processos. A parte em hardware foi desenvolvida inteiramente em linguagem VHDL e executado em FPGA, o que trouxe grande flexibilidade durante o desenvolvimento.

As principais contribuições deste projeto, limitações encontradas e traba- lhos futuros sugeridos são apresentados a seguir.

7.1 Contribuições

A seguir são apresentadas as principais contribuições deste trabalho: 1. Modelo de implementação transparente no sistema operacional: Com a

arquitetura proposta e implementada neste trabalho, o sistema operaci- onal não precisa ter ciência do hardware que executa para a designação dos processos. Com o auxílio de hardware para realizar a projeção e a im- plementação do driver na parte específica da arquitetura, o sistema ope- racional já sabe qual processo deve executar em qual processador. Com isso, a arquitetura proposta nesta tese pode também ser utilizada em arquiteturas homogêneas, sem precisar de nenhuma modificação para isso.

2. Método de projeção: A utilização do método de projeção alcançou de- sempenho na maioria dos testes realizados, chegando a 41% de ganho. O método proposto é genérico e pode ser aplicado para diferentes tipos de processadores. Uma das principais vantagens de sua arquitetura é o fato de não precisar ter conhecimento dos recursos dos processadores. A configuração dos processadores é inserida no escalonador por meio de vetores de desempenho. Sendo assim, o mesmo escalonador pode ser uti- lizado sem a necessidade de modificações para diferentes arquiteturas. 3. Acompanhamento em tempo real: O escalonador do sistema operacional

tem conhecimento em tempo real do comportamento de um processo. Além disso, a projeção de cada processo é continuamente realizada para todos os processadores da arquitetura, assim, em qualquer momento de sua execução é possível saber o desempenho esperado em cada proces- sador.

4. Desempenho da execução em hardware: Este trabalho mostrou que o auxílio do hardware no escalonamento em arquiteturas heterogêneas é fundamental. Além disso, com as projeções sendo realizadas continua- mente, a única preocupação do sistema operacional é obter essas infor- mações, não necessitando gastar ciclos para realizar nenhum cálculo.

5. Implementação em hardware do algoritmo Hungarian: O algoritmo Hun- garian foi inteiramente desenvolvido em VHDL. Essa foi uma das primei- ras implementações desse algoritmo de otimização em VHDL já que não foi possível encontrar referências de artigos publicados relacionados. 6. Modelo do monitor: Este projeto apresentou uma arquitetura genérica

para a implementação de um monitor de desempenho em um processa- dor. Esse monitor foi implementado no Leon 3 e utilizado na projeção de desempenho, o qual pode também ser utilizado em outras pesquisas para estudar o comportamento do software.

7. Suporte a heterogeneidade no sistema operacional: Por último, este tra- balho também colaborou realizando um estudo de como realizar a imple- mentação de suporte a heterogeneidade no sistema operacional, enfati- camente no Linux.