SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
jan2012



                         Online Feedback-Directed Optimization of Java
                        Matthew Arnold*                                Michael Hind                   Barbara G. Ryder*
                        IBM T.J. Watson Research Center                                              *Rutgers University
                        hind@watson.ibm.com                                                      {marnold, ryder}@cs.rugters.edu

                                     Resumo realizado por Marcio Machado Pereira – RA 780681

                                                                                 código otimizado ou durante toda a execução; e por quanto
                                                                                 tempo os dados são coletados.
                              I. INTRODUÇÃO


N     o artigo[1], os autores descrevem a implementação de
      um sistema de otimização dirigida (guiada) por dados
coletados durante a execução (online feedback-directed
                                                                                 Coletar dados durante o estágio inicial pode não ser efetivo ou
                                                                                 não produtivo uma vez que o comportamento dominante da
                                                                                 aplicação não é exercitado neste estágio. Coletar dados sobre
optimization system – FDO). O mesmo é totalmente                                 código otimizado pode endereçar o problema descrito acima
automatico, não requerendo que estas informações sejam                           porém o overhead pode ser proibitivo, principalmente quando
capturados em uma execução prévia da aplicação (offline                          instrumentação é inserida no código para se coletar
profile). Para isto, o sistema usa um framework de baixo                         informações de granularidade mais fina. Coletar dados por
impacto       (low-overhead)       denominado      “general                      um período curto (short bursts) pode reduzir o overhead
instrumentation sampling framework – ISF”[2] que coleta                          porém o resultado é menos preciso, principalmente se o
dados como, por exemplo, a frequencia nas arestas de                             comportamento do programa varia no tempo.
controle do fluxo de execução. Estas informações são usadas
para guiar várias otimizações tradicionais, bem como uma                         Alguns tipos de coleta de informações podem ser realizadas
transformação conhecida como Splitting, no qual o artigo faz                     sem a necessidade de instrumentação no código. Por exemplo,
uma contribução apresentando um algoritmo denominado                             o Jikes RVM AOS coleta dados para a construção do grafo de
“feedback-directed splitting” mais agressivo que seus                            chamadas (call graph) amostrando a pilha de chamada (call
predecessores.                                                                   stack) em intervalos regulares. Infelizmente, muitos tipos de
                                                                                 informações de granularidade mais fina como por exemplo, a
Os autores argumentam que a realização de “profiling” e                          frequencia de execução de blocos básicos podem ser difícies
otimizações “online” é uma bordagem atrativa pois evita os                       de coletar usando esta abordagem. Para resolver estas
                                                                                 limitações, os autores propuseram um framework denominado
incovenientes do “profiling” realizado “offline”. No entanto
                                                                                 “full-duplication instrumentation sampling framework”,
esta abordagem pode ocasionar um overhead no tempo de
                                                                                 descrito a seguir.
execução para se coletar as informações de profile, tomar as
decisões baseadas nestas informações e realizar as                                                 III.INSTRUMENTATION SAMPLING
otimizações selecionadas. Para solucionar estes problemas
                                                                                 A idéia chave da técnica de full-duplication, mostrada na
utilizou-se o ISF para obter um profiling eficiente e o sistema
                                                                                 figura abaixo, é o seguinte:
de otimização adaptativo AOS (ver seção II) que proveu o
contexto para a implementação do FDO.


                            II. BACKGROUND
A implementação do FDO é uma instância da arquitetura
Jikes RVM Adaptive Optimization System – AOS[3]. AOS
provê um design de alto nível para a realização de
otimizações guiadas por feedback, tanto offline quanto online.
No entanto, as otimizações dirigidas por feedback online são
mais difíceis do que as otimizações dirigidas por feedback
offline. As principais razões são: o aumento (overhead) no
tempo de execução e a precisão e disponibilidade das
informações de profile. Esta última depende dos dados que
estão sendo coletados; quando a coleta é realizada, se durante
a execução do código não-otimizado, durante a execução do

   
     O trabalho em referência foi apresentado na conferência OOPSLA’02
realizado na cidade de Seattle, Washington, USA. O resumo é parte do trabalho
de pesquisa de doutorado do Instituto de Computação da UNICAMP (IC-
Unicamp) e foi elaborado por Pereira, M. M. (e-mail: mpereira@ic.unicamp.br ).
jan2012

Quando um método é instrumentado, o corpo do método é            otimizações a saber: Splitting, Code motion, method inlining
duplicado e toda instrumentação é inserida no código             e loop unrolling.
duplicado. A versão original é minimamente instrumentada
nos pontos de amostragem para permitir que o controle seja       Feedback-Directed Splitting Splitting é uma transformação
transferido para o código duplicado. Amostras são tomadas        que expõe novas oportunidades de otimização tornando
em intervalos regulares através de um mecanismo de               otimizações existentes mais efetivas, principalmente àquelas
amostragem baseada em contador. Este mecanismo mostrou           que dependem de informações do fluxo de dados à frente,
ser de baixo overhead e de alta acuracia para muitos             como por exemplo, load elimination, array bounds
exemplos de instrumentação. A principal desvantagem desta        elimination, devirtualization, etc. O algoritmo utilizado
técnica é que o método inteiro é duplicado aumentando o          resultou em duas vantagens em relação às abordagens
espaço e o tempo de compilação, portanto, métodos                anteriores: Primeiro, os esforços são focados no “caminhos
candidatos para instrumentação online precisam ser               quentes” permitindo um Splitting mais agressivo do que os
escolhidos cuidadosamente.                                       possíveis baseados em heurísticas estáticas. Segundo, o
                                                                 algoritmo é simples de implementar, não impactando nas
                                                                 outras analises.
                     IV. FDO IMPLEMENTATION
AOS provê um ambiente de execução para implementação do          Feedback-Directed Method Inlining Usar dados de profile
FDO na qual um mecanismo leve identifica os métodos              para melhorar as decisões de expandir métodos “em linha”
quentes e os promove para níveis mais altos de otimização. A     pode ter um impacto significativo no desempenho de
implementação do FDO adiciona neste métodos informações          linguagens orientadas a objetos. A frequencia de execução de
para se coletar dados de granularidade mais fina com os          blocos básicos provê informações de profile de granularidade
objetivos de melhorar o desempenho de aplicações de longa        mais fina e são usadas para melhorar as decisões de Inlining.
duração; manter o desempenho na inicialização e melhorar o
desempenho o mais cedo possível. Para isto, os autores           Feedback-Directed Code Positioning Code Positioning
empregaram uma estratégia de dois passos. Primeiro, o            rearranja a ordem de blocos básicos com o objetivo de
sistema utiliza os mecanismos de amostragem existentes no        aumentar a localidade e reduzir o número de desvios
AOS para se encontrar os métodos quentes. Segundo, para          incondicionais. FDO usa a frequencia de execução de blocos
estes métodos, o sistema aplica um mecanismo de                  básicos para conduzir o algoritmo de posicionamento descrito
instrumentação para coletar dados mais detalhados. Esta          por Pettis e Hansen [4].
abordagem é consistente com o projeto geral do AOS e pode
ainda ser generalizado para incluir uma hierarquia de            Feedback-Directed Loop Unrolling Loop unrolling é uma
mecanismos de profile para prover mais informações, com          transformação na qual o corpo do laço é duplicado diversas
um overhead adicional, porém aplicados em porções menores        vezes permitindo melhores otimizações dentro do laço. A
da aplicação.                                                    implementação FDO usa a frequencia de execução dos blocos
                                                                 básicos para desenrolar mais o laço e aumentar o
Os passos desta abordagem estão descritas abaixo:                desempenho, porém laços que não são executados
                                                                 frequentemente são desenrolados menos, preservando tempo
    1.    A execução inicia sem instrumentação e o sistema       de compilação e espaço.
          AOS recompila os métodos baseado nas amostras
          coletadas (timer-based samples), possívelmente
          utilizando múltiplos níveis de otimização.
    2.    Após o método ser otimizado “estaticamente” (em                                  VI.   REFERENCIAS
          tempo de execução, porém sem FDO) este continua a      [1] Arnold, M. Hind, M., and Ryder B. G. 2002. Online feedback-directed
          ser monitorado usando o mesmo mecanismo de             optimization of Java. ACM SIGPLAN Notices 37, 11 (Nov.), 111-129.
                                                                 Proceedings of the 2002 ACM SIGPLAN Conference on Object Oriented
          amostragem baseado em intervalos regulares. Se o       Programming, Systems, Languages and Applications (OOPSLA'02)
          mesmo sem mantém suficientemente quente ele
          então é instrumentado para se coletar informações de   [2] Matthew Arnold and Barbara Ryder. A framework for reducing the cost of
          granularidade mais fina usando a técnica descrita      instrumented code. In SIGPLAN 2001 Conference on Programming Language
          acima.                                                 Design and Implementation, pages 168—179, June 2001
    3.    Após se coletar informações suficientes, o método é    [3] Matthew Arnold , Stephen Fink , David Grove , Michael Hind , Peter F.
          recompilado e as otimizações guiadas por este          Sweeney, Adaptive optimization in the Jalapeño JVM, Proceedings of the 15th
          feedback são aplicadas.                                ACM SIGPLAN Conference on Object-oriented programming, systems,
    4.    Conforme o tempo passa, o comportamento do             languages, and applications, p.47-65, October 2000, Minneapolis, Minnesota,
          programa pode mudar. Para garantir que o seu           United States.
          desempenho não degrade com o passar do tempo,          [4] Karl Pettis and Robert C. Hansen. Profile guided code positioning. In
          dados de profile podem ser reavaliados                 SIGPLAN '90 Conference on Programming Language Design and
          periodicamente.                                        Implementation, June 1990.



               V. FEEDBACK-DIRECTED OPTIMIZATIONS
Muitas otimizações podem se beneficiar deste mecanismo.
Para validar o sistema, os autores implementaram 4

Contenu connexe

Plus de Marcio Machado Pereira

[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...Marcio Machado Pereira
 
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"Marcio Machado Pereira
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threadsMarcio Machado Pereira
 

Plus de Marcio Machado Pereira (9)

[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
 
[Pereira IC'2011] Otimizacoes no LLVM
[Pereira IC'2011] Otimizacoes no LLVM[Pereira IC'2011] Otimizacoes no LLVM
[Pereira IC'2011] Otimizacoes no LLVM
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
[Zhang pact07] resume
[Zhang pact07] resume[Zhang pact07] resume
[Zhang pact07] resume
 
[Magill 03] resume
[Magill 03] resume[Magill 03] resume
[Magill 03] resume
 
[Choi oopsla99] apresentacao
[Choi oopsla99] apresentacao[Choi oopsla99] apresentacao
[Choi oopsla99] apresentacao
 
[Choi ooplsa99] resume
[Choi ooplsa99] resume[Choi ooplsa99] resume
[Choi ooplsa99] resume
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads
 

[Arnold oopsla 02] resumo do artigo "Online Feedback-Directed Optimization of Java"

  • 1. jan2012 Online Feedback-Directed Optimization of Java Matthew Arnold* Michael Hind Barbara G. Ryder* IBM T.J. Watson Research Center *Rutgers University hind@watson.ibm.com {marnold, ryder}@cs.rugters.edu Resumo realizado por Marcio Machado Pereira – RA 780681 código otimizado ou durante toda a execução; e por quanto tempo os dados são coletados. I. INTRODUÇÃO N o artigo[1], os autores descrevem a implementação de um sistema de otimização dirigida (guiada) por dados coletados durante a execução (online feedback-directed Coletar dados durante o estágio inicial pode não ser efetivo ou não produtivo uma vez que o comportamento dominante da aplicação não é exercitado neste estágio. Coletar dados sobre optimization system – FDO). O mesmo é totalmente código otimizado pode endereçar o problema descrito acima automatico, não requerendo que estas informações sejam porém o overhead pode ser proibitivo, principalmente quando capturados em uma execução prévia da aplicação (offline instrumentação é inserida no código para se coletar profile). Para isto, o sistema usa um framework de baixo informações de granularidade mais fina. Coletar dados por impacto (low-overhead) denominado “general um período curto (short bursts) pode reduzir o overhead instrumentation sampling framework – ISF”[2] que coleta porém o resultado é menos preciso, principalmente se o dados como, por exemplo, a frequencia nas arestas de comportamento do programa varia no tempo. controle do fluxo de execução. Estas informações são usadas para guiar várias otimizações tradicionais, bem como uma Alguns tipos de coleta de informações podem ser realizadas transformação conhecida como Splitting, no qual o artigo faz sem a necessidade de instrumentação no código. Por exemplo, uma contribução apresentando um algoritmo denominado o Jikes RVM AOS coleta dados para a construção do grafo de “feedback-directed splitting” mais agressivo que seus chamadas (call graph) amostrando a pilha de chamada (call predecessores. stack) em intervalos regulares. Infelizmente, muitos tipos de informações de granularidade mais fina como por exemplo, a Os autores argumentam que a realização de “profiling” e frequencia de execução de blocos básicos podem ser difícies otimizações “online” é uma bordagem atrativa pois evita os de coletar usando esta abordagem. Para resolver estas limitações, os autores propuseram um framework denominado incovenientes do “profiling” realizado “offline”. No entanto “full-duplication instrumentation sampling framework”, esta abordagem pode ocasionar um overhead no tempo de descrito a seguir. execução para se coletar as informações de profile, tomar as decisões baseadas nestas informações e realizar as III.INSTRUMENTATION SAMPLING otimizações selecionadas. Para solucionar estes problemas A idéia chave da técnica de full-duplication, mostrada na utilizou-se o ISF para obter um profiling eficiente e o sistema figura abaixo, é o seguinte: de otimização adaptativo AOS (ver seção II) que proveu o contexto para a implementação do FDO. II. BACKGROUND A implementação do FDO é uma instância da arquitetura Jikes RVM Adaptive Optimization System – AOS[3]. AOS provê um design de alto nível para a realização de otimizações guiadas por feedback, tanto offline quanto online. No entanto, as otimizações dirigidas por feedback online são mais difíceis do que as otimizações dirigidas por feedback offline. As principais razões são: o aumento (overhead) no tempo de execução e a precisão e disponibilidade das informações de profile. Esta última depende dos dados que estão sendo coletados; quando a coleta é realizada, se durante a execução do código não-otimizado, durante a execução do  O trabalho em referência foi apresentado na conferência OOPSLA’02 realizado na cidade de Seattle, Washington, USA. O resumo é parte do trabalho de pesquisa de doutorado do Instituto de Computação da UNICAMP (IC- Unicamp) e foi elaborado por Pereira, M. M. (e-mail: mpereira@ic.unicamp.br ).
  • 2. jan2012 Quando um método é instrumentado, o corpo do método é otimizações a saber: Splitting, Code motion, method inlining duplicado e toda instrumentação é inserida no código e loop unrolling. duplicado. A versão original é minimamente instrumentada nos pontos de amostragem para permitir que o controle seja Feedback-Directed Splitting Splitting é uma transformação transferido para o código duplicado. Amostras são tomadas que expõe novas oportunidades de otimização tornando em intervalos regulares através de um mecanismo de otimizações existentes mais efetivas, principalmente àquelas amostragem baseada em contador. Este mecanismo mostrou que dependem de informações do fluxo de dados à frente, ser de baixo overhead e de alta acuracia para muitos como por exemplo, load elimination, array bounds exemplos de instrumentação. A principal desvantagem desta elimination, devirtualization, etc. O algoritmo utilizado técnica é que o método inteiro é duplicado aumentando o resultou em duas vantagens em relação às abordagens espaço e o tempo de compilação, portanto, métodos anteriores: Primeiro, os esforços são focados no “caminhos candidatos para instrumentação online precisam ser quentes” permitindo um Splitting mais agressivo do que os escolhidos cuidadosamente. possíveis baseados em heurísticas estáticas. Segundo, o algoritmo é simples de implementar, não impactando nas outras analises. IV. FDO IMPLEMENTATION AOS provê um ambiente de execução para implementação do Feedback-Directed Method Inlining Usar dados de profile FDO na qual um mecanismo leve identifica os métodos para melhorar as decisões de expandir métodos “em linha” quentes e os promove para níveis mais altos de otimização. A pode ter um impacto significativo no desempenho de implementação do FDO adiciona neste métodos informações linguagens orientadas a objetos. A frequencia de execução de para se coletar dados de granularidade mais fina com os blocos básicos provê informações de profile de granularidade objetivos de melhorar o desempenho de aplicações de longa mais fina e são usadas para melhorar as decisões de Inlining. duração; manter o desempenho na inicialização e melhorar o desempenho o mais cedo possível. Para isto, os autores Feedback-Directed Code Positioning Code Positioning empregaram uma estratégia de dois passos. Primeiro, o rearranja a ordem de blocos básicos com o objetivo de sistema utiliza os mecanismos de amostragem existentes no aumentar a localidade e reduzir o número de desvios AOS para se encontrar os métodos quentes. Segundo, para incondicionais. FDO usa a frequencia de execução de blocos estes métodos, o sistema aplica um mecanismo de básicos para conduzir o algoritmo de posicionamento descrito instrumentação para coletar dados mais detalhados. Esta por Pettis e Hansen [4]. abordagem é consistente com o projeto geral do AOS e pode ainda ser generalizado para incluir uma hierarquia de Feedback-Directed Loop Unrolling Loop unrolling é uma mecanismos de profile para prover mais informações, com transformação na qual o corpo do laço é duplicado diversas um overhead adicional, porém aplicados em porções menores vezes permitindo melhores otimizações dentro do laço. A da aplicação. implementação FDO usa a frequencia de execução dos blocos básicos para desenrolar mais o laço e aumentar o Os passos desta abordagem estão descritas abaixo: desempenho, porém laços que não são executados frequentemente são desenrolados menos, preservando tempo 1. A execução inicia sem instrumentação e o sistema de compilação e espaço. AOS recompila os métodos baseado nas amostras coletadas (timer-based samples), possívelmente utilizando múltiplos níveis de otimização. 2. Após o método ser otimizado “estaticamente” (em VI. REFERENCIAS tempo de execução, porém sem FDO) este continua a [1] Arnold, M. Hind, M., and Ryder B. G. 2002. Online feedback-directed ser monitorado usando o mesmo mecanismo de optimization of Java. ACM SIGPLAN Notices 37, 11 (Nov.), 111-129. Proceedings of the 2002 ACM SIGPLAN Conference on Object Oriented amostragem baseado em intervalos regulares. Se o Programming, Systems, Languages and Applications (OOPSLA'02) mesmo sem mantém suficientemente quente ele então é instrumentado para se coletar informações de [2] Matthew Arnold and Barbara Ryder. A framework for reducing the cost of granularidade mais fina usando a técnica descrita instrumented code. In SIGPLAN 2001 Conference on Programming Language acima. Design and Implementation, pages 168—179, June 2001 3. Após se coletar informações suficientes, o método é [3] Matthew Arnold , Stephen Fink , David Grove , Michael Hind , Peter F. recompilado e as otimizações guiadas por este Sweeney, Adaptive optimization in the Jalapeño JVM, Proceedings of the 15th feedback são aplicadas. ACM SIGPLAN Conference on Object-oriented programming, systems, 4. Conforme o tempo passa, o comportamento do languages, and applications, p.47-65, October 2000, Minneapolis, Minnesota, programa pode mudar. Para garantir que o seu United States. desempenho não degrade com o passar do tempo, [4] Karl Pettis and Robert C. Hansen. Profile guided code positioning. In dados de profile podem ser reavaliados SIGPLAN '90 Conference on Programming Language Design and periodicamente. Implementation, June 1990. V. FEEDBACK-DIRECTED OPTIMIZATIONS Muitas otimizações podem se beneficiar deste mecanismo. Para validar o sistema, os autores implementaram 4