Your SlideShare is downloading. ×
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"

177
views

Published on

No artigo, os autores descrevem o projeto e implementação de um mecanismo denominado Adaptive Optimization System – AOS, na máquina virtual Java Jikes RVM (Research Virtual Machine). …

No artigo, os autores descrevem o projeto e implementação de um mecanismo denominado Adaptive Optimization System – AOS, na máquina virtual Java Jikes RVM (Research Virtual Machine).


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
177
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Jan 2012 Adaptive Optimization in the Jalapeño JVM Matthew Arnold* Stephen Fink David Grove Michael Hind Peter F. Sweeney IBM T.J. Watson Research Center *Rutgers University {sjfink, groved, hindm, pfs} @ us.ibm.com marnold@cs.rugters.edu Resumo realizado por Marcio Machado Pereira – RA 780681 • Nível 0 consiste principalmente num conjunto de otimizações realizadas on-the-fly durante as transformações I. INTRODUÇÃO dos bytecodes na representação intermediária. São elas,N o artigo[1], os autores descrevem o projeto e implementação de um mecanismo denominadoAdaptive Optimization System – AOS, na máquina virtual constant, type, non-null e copy propagation; constant folding e arithmetic simplification; unreachable code elimination; elimination of redundant nullchecks; checkcasts e array storeJava Jikes RVM[2]. Trata-se de uma arquitetura geral e checks.extensível que suporta otimizações mais agressivas, i.e., • Nível 1 incrementa o nível 0 com otimizaçõesotimizações que exploram informações coletadas em tempo locais adicionais como common subexpression elimination,de execução. Os resultados experimentais demonstram que array bound check elimination e redundant load elimination.estas otimizações trazem melhoras substancias no Este também adiciona inlining optimization baseado emdesempenho das aplicações quando comparadas com os heurísticas no tamanho estático, global flow-insensitive copymétodos tradicionais Just-in-Time (JIT) e HotSpot. and constant propagation, global flow-insensitive dead assignment elimination, string-buffer synchronizationPara um melhor entendimento do leitor, a seção 2 apresenta optimization, scalar replacement of aggregates and shortde forma sucinta as caracteristicas da máquina virtual arrays. • Nível 2 incrementa o nível 1 com otimizaçõesutilizada, Jikes RVM. As seções seguintes descrevem a sensíveis a fluxo baseadas no SSA (SSA-based flow-sensitivearquitetura AOS bem como as técnicas empregadas de optimization). Em adição às otimizações tradicionais de SSAotimização seletiva (Selective Optimization) e a em variáveis escalares o sistema também usa uma versãotransformação “em linha” dirigida por profile (Profile- extendida de Array SSA para realizar redundant loadDirected Inlining). elimination e array bounds check elimination. Jikes RVM multiplexa as threads Java em processadores II. JIKES RVM virtuais JVM que são mapeados em pthreads no SistemaO Jikes RVM emprega uma estratégia de “somente Operacional. O sistema suporta escalonamento das threadscompilação”, i.e., este compila todos os métodos para código num modelo de quase-preempção. Os compiladores geramnativo antes de executá-los. Atualmente o sistema inclui dois pontos de cessão ou interrupção (yield points) que são pontoscompiladores completamente operacionais: no programa onde a thread que está em execução verifica um bit dedicado no registro de controle da máquina para • Baseline Compiler transforma os bytecodes em determinar se a mesma irá ceder o processador virtual. No código nativo simulando uma pilha de operandos em Jikes RVM, os compiladores inserem estes pontos de cessão Java. O compilador não realiza alocação de nas entradas e saída dos métodos e nos pontos de retorno de registradores, portanto o código nativo gerado tem um laços (loop back edges). Usando um mecanismo de desempenho somente um pouco melhor do que o interrupção de tempo, um tratador desta interrupção código interpretado. (interrupt handler) periodicamente “liga” o bit em todos os processadores virtuais. Quando a thread em execução alcança • Optimizing Compiler [3] transforma os bytecodes em o próximo ponto de cessão, a verificação do bit irá resultar em uma representação intermediária na qual este possa uma chamada ao escalonador. realizar uma série de otimizações. O compilador usa uma técnica de alocação de registradores eficiente e efetiva conhecida por Linear Scan. III.ADAPTIVE OPTIMIZATION SYSTEM A implementação do Jikes RVM AOS utiliza um número deAs otimizações são agrupadas em três níveis: threads Java: As threads Organizer, pertencentes ao subsistema de medidas em tempo de execução (runtime measurements component), a thread Controler, e as threads do subsistema de compilação. As várias threads são  O trabalho em referência foi apresentado na conferência OOPSLA’00 fracamente acopladas, comunicando entre si através de filasrealizado na cidade de Minneapolis, MN, USA. O resumo é parte do trabalho de (queues) compartilhadas ou estruturas de dados em memória.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 ). Todas as filas no sistema são filas com prioridade e
  • 2. Jan 2012bloqueantes. Se uma thread realiza uma operação de V. PROFILE-DIRECTED INLININGconsumo (dequeue) quando a fila estiver vazia, a thread é Profile-directed inlining procura identificar as arestas nosuspensa até que uma outra thread produza a informação grafo de chamadas (call graph), grafo este que representa asdesejada (i.e., realiza uma operação enqueue). relações chamador-chamado, e que são frequentemente percorridas para determinar se há benefício em recompilar oO sistema AOS executa duas tarefas principais: otimização método chamador para permitir que se realize a otimizaçãoseletiva (Selective Optimization) e a transformação “em “em linha” (inlining optimization) dos métodos chamados.linha” dirigida por profile (Profile-Directed Inlining). O sistema coleta amostras estatísticas de chamadas de métodos durante a execução da aplicação e mantém uma IV. SELECTIVE OPTIMIZATION representação dinâmica aproximada do grafo de chamadasO objetivo da otimização seletiva é identificar regiões de com base nestes dados. Para isto, o sistema instala umcódigo em que a aplicação gasta tempo significativo de listener que amostra as arestas de chamada (call edges) nosexecução (frequentemente chamado de HotSpot), determinar pontos de cessão (yield points) na entrada e saída dosse o desempenho geral da aplicação irá melhorar se métodos. Na amostragem, o listener coleta o id dos métodosotimizações forem aplicadas em um ou mais HotSpots e, se chamado e chamador, bem como o offset da instrução defor o caso, compilá-los com as otimizações selecionadas e chamada no código do chamador. Quando o buffer estiverinstalar o código otimizado na máquina virtual (VM). cheio, a janela de amostragem termina.No Jikes RVM, a unidade de otimização é o método. Então, O listener então “acorda” a thread Organizer para atualizar opara realizar a otimização seletiva, o subsistema de medidas grafo dinâmico de chamadas com os novos dados coletados. Oem tempo de execução precisa identificar os métodos oráculo de otimização “em linha” faz uso então do grafo paracandidatos (Hot methods). Para isto, o subsistema instala um guiar suas decisões de otimização. Maiores detalhes sãolistener que periodicamente amostra o método em execução encontradas em [4].corrente nos pontos de interrupção da thread (yield points).Os yield points ocorrem nas entradas e saídas dos métodos enas arestas de retorno dos laços (loop back edges). Quando VI. CONCLUSÕESfor o momento de coletar uma amostra o listener inspeciona a Este resumo teve como objetivo descrever a arquitetura dopilha de chamada da thread (call stack) e grava a sistema AOS tão somente, porisso não foi apresentado aidentificação do método corrente. Se a interrupção ocorre no metodologia usada na experimentação bem como osprólogo do método o listener adicionamente registra o resultados experimentais. Os autores demonstram no artigoidentificador do método chamador (caller method). que o sistema AOS introduz um overhead de menos de 10% enquanto proporciona um desempenho total na aplicaçãoQuando o buffer de amostragem fica cheio, a janela de competitivo com as melhores estratégias comerciaisamostragem termina. O organizador de métodos quentes (Hot utilizadas. Além disso, pode-se observar que o sistema AOSMethods Organizer) processa o buffer atualizando os dados provê uma infraestrutura flexível de tal forma que futurasde amostragem dos métodos (Method Sample Data). Esta pesquisas possam ser realizadas no campo de otimizaçõesestrutura de dados mantém para cada método o número total online.de vezes que este foi amostrado. Após atualizar a estrutura dedados, a thread Organizer cria um evento para cada método VII. REFERENCIASque foi amostrado nesta janela e adiciona o mesmo na fila da [1] Matthew Arnold , Stephen Fink , David Grove , Michael Hind , Peter F.thread Controller usando o valor de sua amostragem como Sweeney, Adaptive optimization in the Jalapeño JVM, Proceedings of the 15thsua prioridade. ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.47-65, October 2000, Minneapolis, Minnesota, United States.Quando a fila com prioridades entrega um evento aoController este consome o evento aplicando uma politica de [2] B. Alpern , C. R. Attanasio , J. J. Barton , M. G. Burke , P. Cheng , J.-D.recompilação dirigida por modelo (model-driven Choi , A. Cocchi , S. J. Fink , D. Grove , M. Hind , S. F. Hummel , D. Lieber ,recompilation policy) para determinar que ação (se for o V. Litvinov , M. F. Mergen , T. Ngo , J. R. Russell , V. Sarkar , M. J. Serrano ,caso) deverá ser aplicada ao método indicado. Se o Controller J. C. Shepherd , S. E. Smith , V. C. Sreedhar , H. Srinivasan , J. Whaley, The Jalapeño virtual machine, IBM Systems Journal, v.39 n.1, p.211-238, Januarydecidir por recompilar o método, este cria um evento de 2000.recompilação descrevendo o método a ser compilado e oplano de otimização que derverá ser usado e coloca-o na fila [3] Michael G. Burke , Jong-Deok Choi , Stephen Fink , David Grove , Michaelde recompilação. Esta fila prioriza os eventos baseado em Hind , Vivek Sarkar , Mauricio J. Serrano , V. C. Sreedhar , Harini Srinivasan ,uma estimativa de custo-benefício da computação futura do John Whaley, The Jalapeño dynamic optimizing compiler for Java, Proceedings of the ACM 1999 conference on Java Grande, p.129-141, June 12-14, 1999,método. San Francisco, California, United States.Quando um evento está disponível na fila de recompilação, a [4] M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. Architecture andthread de recompilação remove o mesmo e realiza a atividade policy for adaptive optimization in virtual machines. Technical Report 23429, IBM Research, Nov. 2004.de compilação especificada pelo evento, instalando oresultado do método compilado na VM.