OpenCore, uma ferramenta leve para monitaração de desempenho em Java feita pela JINSPIRED, teve sua versão 6.0 disponibilizada esse mês.
OpenCore é uma biblioteca de monitoração de desempenho que foca em aplicações de baixa latência. Isso significa que ela tenta ter o mínimo de overhead possível. A biblioteca também especifica um modelo de integração que busca separar "casos", “medidas” e “medidor”. O caso é um começo e um final arbitrário na execução de um programa (por exemplo, o começo e o fim de um método). Um medidor é um exemplo de algum ponto no tempo de algo como por exemplo o uso de uma CPU ou o tempo do relógio. Uma medida é o resumo de alguns medidores em um conjunto de casos. Então, exemplificando, pode-se dizer “pesquise todas as entradas e saídas de método. Quando cada caso começar, então meça o tempo decorrido de cpu. Agora, verifique qual é o resultado da média de tempo de CPU por método.
De acordo com o OpenCore, a vantagem de separar em três é que o overhead pode ser minimizado para atividades que nunca irão ser medidas pois “Ao contrário de todas as outras soluções, não existe nenhuma referência explícita de como uma atividade é medida ou se seu disparo foi de fato medido – isso é controlado por configuração do medidor real em tempo de execução pelo administrador”.
O HowTo do OpenCore descreve que, para usá-lo em um projeto basta seguir os seguintes passos básicos:
- Adicionar o agente nativo do OpenCore através dos seguintes argumentos via linha de comando: -agentpath e -javaagent (nota: Alguns dos agentes usam AspectJ)
- Adicionar alguns jars do OpenCore no classpath;
- Habilitar o JMX ;
- Criar um arquivo de configuração que especifica o que deve ser monitorado e como.
De agora em diante, o quanto que a aplicação se torna envolvida com o OpenCore depende de como ela foi configurada. Em seu nível mais básico, o OpenCore simplesmente captura a contagem de chamadas de método e reporta ao JMX. Todavia, o agente foi designado para ser plugável a fim de que os desenvolvedores possam habilitar métricas e estatísiticas embutidas mais sofisticadas, ou possam colocar suas próprias métricas customizadas que capturam qualquer coisa e reportam a qualquer parte.
A biblioteca alega ter um menor overhead, especialmente para instrumented métodos que foram “desligados”. Por exemplo, em um OpenCore-authored benchmark, VisualVM profilling (que está na SUN JDK) foi 2 a 3 vezes mais lento do que o OpenCore probes.
Além de servir para ser utilizado para simples diagnósticos de desempenho, o OpenCore também pretende “unificar múltiplas aplicacões, sistemas e negócios relacionados ao gerenciamento de domínio sobre um modelo”, isso significa que ele poderia ser usado automaticamente para monitoramento e ajuste de capacidades, medição de uso para chargeback, e rastreamento da conformidade do SLA ( service level agreement - acordo de nível de serviço(ANS)). Essa visão unificada, entretanto, depende do fabricante e adoção nos domínios da tecnologia OpenCore.
Futuras versões prometem ter monitoração de desempenho para linguagens que não rodam na JVM como .NET e Ruby nativo, Python e PHP, embora nenhuma data tenha sido especificada para a liberação da versão.
Finalizando, desenvolvedores podem notar que o OpenCore não está licenciado como um “open source” mas sim como “APIs documentadas publicamente com integração definidada e pontos de extensão”. Em uma discussão recente Willian Louth esclarece que OpenCore é um produto comercial.