No artigo, os autores descrevem a implementação de um sistema de otimização dirigida por dados coletados durante a execução (online feedback-directed optimization system – FDO), totalmente
automatico, não requerendo que estas informações sejam
capturados em uma execução prévia da aplicação (offline
profile).
[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