18
Reduzindo o Overhead Imposto pela Compila¸c˜ ao Dinˆ amica XI Mostra de Trabalhos de Inform´ atica Anderson Faustino, Maycon Sambinelli, Rodrigo H¨ ubner Universidade Estadual de Maring´ a 17 de setembro de 2009 Anderson Faustino, Maycon Sambinelli, Rodrigo H¨ ubner Reduzindo o Overhead Imposto pela Compila¸c˜ ao Dinˆ amica

Reduzindo o Overhead Imposto pela Compilação Dinâmica

Embed Size (px)

Citation preview

Page 1: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Reduzindo o Overhead Imposto pela CompilacaoDinamica

XI Mostra de Trabalhos de Informatica

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner

Universidade Estadual de Maringa

17 de setembro de 2009

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 2: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Conteudo

Introducao

Motivacao

O Compilador YAPc

Sistema YAP+ Prolog

A Arquitetura do Compilador YAPc

O Novo Mecanismo de Compilacao Dinamica do YAP+ Prolog

Testes de Avaliacao

Conclusao

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 3: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Introducao

Compiladores que geram codigo nativo dinamicamente, melhoramconsideravelmente o desempenho da aplicacao, mas incluem ooverhead em tempo de compilacao.

O objetivo deste trabalho e de minimizar o overhead imposto pelacompilacao dinamica, explorando arquiteturas multinucleo paraeste fim.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 4: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Motivacao

Prolog e uma linguagem declarativa amplamente utilizada eseu desempenho e um objeto de estudo muito importante;

Sistemas Prolog compilam para codigo nativo afim demelhorar o desempenho, o que pode ser caro, pois baseiam-sena analise global e/ou na intervencao do usuario;

E desenvolvido um trabalho a partir do YAP Prolog, o YAP+Prolog, que utiliza o compilador dinamico YAPc, afim deexplorar arquitetura multinucleo, focando um maiordesempenho principalmente de grandes aplicacoes;

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 5: Reduzindo o Overhead Imposto pela Compilação Dinâmica

O Compilador YAPc

Um compilador dinamico para Prolog;

Utiliza informacoes sobre os tipos dos dados;

Dois objetivos principais: Desempenho e Manutenabilidade;

Focar os componentes mais importantes do programa atravesde uma interpretacao previa, permite identificar caracterısticasimportantes afim de gerar um codigo optimizado;

A compilacao dinamica para Prolog e importante por doismotivos: Permite identificar regioes mais utilizadas nocodigo (hot-spots) e possibilita ter maiores informacoes sobreargumentos de cada procedimento (difıcil em uma linguagemnao tipada e com varias formas de uso).

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 6: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Sistema YAP+ PrologCaracterısticas

Faz uso do compilador JIT;

Primeiro interpreta as clausulas em tempo de execucao edepois gera codigo nativo para as mais executadas;

A compilacao dinamica definir argumentos de um predicado edetermina quais partes da aplicacao devem ser otimizadas;

Um predicado invocado pela primeira vez e sempreinterpretado. Se executado frequentemente, ele e compilado eotimizado;

Processo de compilacao:

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 7: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Sistema YAP+ PrologA Compilacao Dinamica

Para descobrir as oportunidades de compilacao, o sistema devedecidir:

Quando compilar - Determinar o tempo a ser esperado paraque as clausulas candidatas sejam compiladas;

O que compilar - E verificado a clausula cujo o contadoratingiu o limite. Como uma clausula pode ser muito simples,e verificado tambem a clausula que a chamou. Deve satisfazeras seguintes condicoes:

1o contador > MinInvocacoes;2o tamanho >= TamLimite;

Quais caminhos compilar - UItiliza-se uma tecnica baseadaem regioes, permitindo identificar as porcoes de codigos maisvisitadas em tempo de execucao, evitando a geracao decodigo fora das regioes selecionadas ate o codigo serrealmente executado.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 8: Reduzindo o Overhead Imposto pela Compilação Dinâmica

A Arquitetura do Compilador YAPc

E o compilador que quando acionado, gera o codigo nativo parapartes do programa que sao frequentementes executados. Suascaracterısticas sao:

Emprega algoritmos simples - Reduz pausas no processo decompilacao;

E adaptavel as caracterısticas do programa -Caracterısticas que determinam o fluxo de execucao entre asfases, para alcancar um bom desempenho;

Diminui as pausas do sistema de compilacao - Compilaapenas os caminhos executados;

Gera codigo compacto - Gera codigo nativo apenas para asregioes realmente executadas.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 9: Reduzindo o Overhead Imposto pela Compilação Dinâmica

A Arquitetura do Compilador YAPc

A representacao seguinte da arquitetura do compilador dividida emfront-end e back-end

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 10: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Sistema YAP+ PrologO Novo Mecanismo de Compilacao Dinamica

Durante a execucao o interpretador verifica se para cadaclausula existe uma versao otimizada de acordo com oscriterios;

A otimizacao realizada e armazenada na area de codigosnativos, indicando que para o predicado atual existe umaversao otimizada;

A parte nao otimizada nao e descartada pois ainda podemocorrer depuracoes;

A execucao de um predicado e a sua compilacao que dainterpretacao da lugar a compilacao;

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 11: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Sistema YAP+ PrologO Novo Mecanismo de Compilacao Dinamica

A arquitetura do sistema YAP+ possui os seguintes componentes:

Gerente de Fluxos. Gerencia a concorrencia de diferentesfluxos de execucao. Prove um mecanismo baseado e lockspara sincronizar os fluxos, motivo pelo qual nao e precisointerromper a execucao;

Motor de Execucao. Papel de executar todo o programa.Quando existe uma compilacao a ser realizada e ativado oMotor de Compilacao atraves de um sinal do sistema;

Motor de Compilacao. Compila as clausas indicadas.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 12: Reduzindo o Overhead Imposto pela Compilação Dinâmica

YAP+ - Avaliacao

Programas utilizados para os testes de avaliacao:

append: Insere N elementos no inıcio de uma outra lista;

naive reverse: Inverte uma lista com N elementos;

zebra: quebra cabeca logico baseado em restricoes que eresolvido por busca exaustiva;

hanoi: Torre de hanoi contendo 3 pinos e N discos;

quick sort: Ordenacao de N elementos pelo metodo quicksort;

tak: Programa altamente recursivo, que e controlado poroperacoes inteiras.

Os teste foram realizados em uma maquina Intel Core 2 Duo 1.66Ghz com 2 Gb de memoria, rodando em Linux.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 13: Reduzindo o Overhead Imposto pela Compilação Dinâmica

YAP+ versus YAP

Avaliacao com o objetivo de identificar a aceleracao obtida atravesde chamadas a codigo nativo. Configuracao utilizada:

Cadas programa e chamado 1000 vezes. Tempo de execucao:1000 x tempo do programa;

Tempo de execucao e a media entre 5 execucoes;

O limite para cada invocacao da compilacao dinamica foi de1.000 chamadas;

Todas as otimizacoes e o coletor de lixo estavam ligados.

Os testes foram realizados em uma maquina Intel Core 2 Duo 1.66Ghz com 2 Gb de memoria, rodando em Linux.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 14: Reduzindo o Overhead Imposto pela Compilação Dinâmica

YAP+ versus YAP

Entradas para os programas:

Tempo de execucao dos programas em segundos e a aceleracaoobtida utilizando o compilador YAPc:

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 15: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Impacto do YAPc no Ambiente de Execucao

Programas invocados uma vez e aumento das entradas. Diminui otempo de execucao e aumenta o de compilacao. Entradas:

Analisando o desempenho do YAP+:

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 16: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Analise do Compilador YAPc

Tempo gasto pelo compilador em milissegundos, que variabastante dependendo das caracterısticas de cada programa:

O maior custo esta na fase de alocacao dos registradores queconsome entre 50,12% e 83,72% do tempo de compilacao.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 17: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Nova Analise dos Programas Testes

Testes realizados para o novo sistema YAP+ que explora asarquiteturas multinucleos com a mesma configuracao utilizada noultimo teste:

Explorar arquiteturas multinucleo reduz o impacto do sistema decompilacao no ambiente de execucao.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica

Page 18: Reduzindo o Overhead Imposto pela Compilação Dinâmica

Conclusao

Como visto, para programas pequenos o YAP+ nem sempre obteveum desempenho melhor, pois programas pequenos acionam muitasvezes o sistema de compilacao.

A reestruturacao do sistema YAP+ possui a vantagem de explorararquiteturas emergentes e possiblitou avaliar situacoes crıticas parao sistema YAP+.

Anderson Faustino, Maycon Sambinelli, Rodrigo Hubner Reduzindo o Overhead Imposto pela Compilacao Dinamica