Compartilhe

Como o OpenElemetria melhorou sua integridade de código para o ARM64 trabalhando com Ampere - SitePoint

Instantâneo

Desafio

Os desenvolvedores de software e os gerentes de TI precisam de instrumentação e métricas para medir o comportamento do software. Quando os profissionais de desenvolvedores e DevOps assumem que o software será executado em uma única arquitetura de hardware, eles podem estar negligenciando o comportamento específico da arquitetura. Os servidores baseados em ARM64, incluindo a família de processadores ampere Altra, oferecem melhorias de desempenho e economia de energia em relação ao X86, mas a arquitetura subjacente é o ARM64, que se comporta de maneira diferente da arquitetura x86 em um nível muito baixo.

Na época, meados de 2023, a Opentelemetria não suportou formalmente implantações do ARM64. À medida que a popularidade das instâncias do ARM64 aumentava devido ao seu desempenho competitivo, o monitoramento desses sistemas era fundamental para os fornecedores de observabilidade.

Solução

Para ajudar a corrigir essa situação, a computação de ampere doou servidores movidos a altra para a equipe OpenTelemety. Com esses processadores, a equipe pode começar a adaptar sua instrumentação de telemetria para o ARM64 e adaptar seu código Node.JS, Java e Python para a arquitetura ARM64.

“A Ampere nos deu uma vantagem para entender como a melhor instrumentação do código e executá -la nessa configuração”, observou Antoine Toulmé, que mantém o projeto de colecionador de Opentelemetria enquanto atuava como gerente sênior de engenharia da Splunk. “Foi uma experiência interessante, porque é um hardware realmente poderoso”.

Para que a equipe do OpenElemetria traga seu suporte de CI/CD para o ARM64 até a paridade com o X86, eles usaram. Atuado permitiu que a equipe do OpenElemetria encenasse um ambiente de ações do GitHub auto-hospedado no qual eles pudessem criar dutos que testassem o código em ambas as arquiteturas para as mesmas condições.

Dessa forma, o projeto pode executar seu conjunto completo de testes para todas as arquiteturas, sem forçar os desenvolvedores do projeto a selecionar diferentes testes para cada arquitetura. Como resultado, o apoio do projeto ao ARM64 está se aproximando da paridade com o x86.

Resultados

A OpenElemetria agora deu aos desenvolvedores ARM64 e X86 e gerentes de TI as instrumentação e métricas de que precisam. Como resultado, os clientes que executam o Opentelemetria na produção estão experimentando um código mais confiável e estável.

Isso é verdade não apenas para todas as arquiteturas do processador, mas para todos os sistemas operacionais: identificar e corrigir bugs como condições de corrida, que podem ser mais fáceis de acionar no ARM64, tem o benefício de melhorar o projeto para todos os sistemas de arquitetura e operação. Toulmé, da OpenElemetria, diz que sua equipe viu 15 % de economia de custos apenas ao reduzir a quantidade, tamanho, escala e alocação de memória de instâncias de implantação, depois de passar de X86 para ARM64.

História do desenvolvedor

Uma classe de software cujas características de desempenho provavelmente diferirão entre as arquiteturas de processador é a plataforma de observabilidade. Veja como o OpenElemetria tornou a observabilidade melhor para todos, tornando seus testes de integração para o ARM mais robusto.

Até alguns anos atrás, os desenvolvedores de software e os operadores de TI discordavam sobre quais aspectos de um aplicativo precisavam ser mais medidos. Não foi chamado de “observabilidade” naquela época, mas “Gerenciamento de desempenho de aplicativos (APM), que foi usado de forma intercambiável com” Monitoramento de desempenho dos negócios “(BPM).

Os desenvolvedores queriam traços detalhados e logs de transações e atividades na memória. Os operadores queriam que um cronômetro fosse acionado quando algum processo parecia começar e parecia terminar, e medir a falta do intervalo entre os dois eventos.

Opentelemetria (Otel) deu a ambos os grupos a instrumentação e as métricas de que precisam, ou pelo menos as ferramentas para criar essas métricas. Ele fornece um front-end que pode ser usado com sistemas modernos de observabilidade e instrumentação que substituíram os sistemas APM antigos, inclusive de fornecedores de longa data, como Dynatatatatatrace e Nova relíquiamas também novos provedores de serviços, como Favo de melAssim, Splunke Datadoge o Sistema de monitoramento de Prometheus de código aberto. Opentelemetria se tornou o segundo maior projeto do Fundação de computação nativa em nuvem (CNCF) por número de colaboradores, depois de Kubernetes.

Para que a instrumentação da OpenElemetria seja robusta e confiável, os desenvolvedores da CNCF devem testá -lo em todas as plataformas de servidor capazes de executá -lo. Servidores baseados em ARM64, incluindo a família de processadores AMPERE Altra, oferecem melhorias de desempenho e economia de energia. Mas a arquitetura subjacente desses processadores é o ARM64, que se comporta de maneira diferente com a arquitetura x86 (AMD64) em um nível muito baixo. O teste OpenElemetria para o ARM64 tem o benefício adicional de revelar problemas em potencial que não foram exibidos nas suítes de teste do projeto quando testadas apenas em x86.

Equilibrando a balança

Em meados de 2023, os desenvolvedores contribuintes com o CNCF estavam enfrentando uma crescente pressão dos usuários para suportar o monitoramento de servidores baseados em ARM64. À medida que a popularidade das instâncias do ARM64 aumentava devido ao seu desempenho competitivo, o monitoramento desses sistemas era fundamental para os fornecedores de observabilidade. Como o OpenElemetria fornece uma interface comum para os desenvolvedores de aplicativos da Kubernetes, houve pressão da comunidade para adicionar suporte à OpenElemetria para processadores ARM64 com até 128 núcleos, como a Ampere Altra.

Naquela época, a OpenElemetria não apoiava formalmente as implantações do ARM64. Para ajudar a corrigir essa situação, a Ampere doou servidores movidos a Altra para a equipe Opentelemetria. Com esses processadores, a equipe pode começar a adaptar sua instrumentação de telemetria para o ARM64 e adaptar seu código Node.JS, Java e Python para a arquitetura ARM64.

“A Ampere nos deu uma vantagem para entender como a melhor instrumentação do código e executá -la nessa configuração”, observou Antoine Toulmé, que mantém o projeto de colecionador de Opentelemetria enquanto atuava como gerente sênior de engenharia da Splunk. “Foi uma experiência interessante, porque é um hardware realmente poderoso”.

Toulmé observou que sua equipe teve poucos problemas para adotar a arquitetura e o ecossistema do ARM do ponto de vista do desenvolvimento do código. Os testes apresentaram os maiores desafios, especificamente ao integrar o código com estruturas, aplicativos e bibliotecas de terceiros.

“Vimos, por exemplo, imagens do Docker que afirmavam que eram compatíveis com o braço”, continuou Toulmé, “e quando você as executa em um ambiente de CI/CD e realmente pretende executá-las em um servidor de braço, você percebe que eles apenas reembalaram o código AMD64, e eles apenas o fizeram como se fosse um braço.

Foto: Antoine Toulmé Apresentando telemetria aberta em um System76 Thelio Astra, alimentado por um 128 Core Ampere Altra Max, na Kubecon UE 2025 (Créditos: Dave Neary)

Quando os profissionais de desenvolvedores e DevOps assumem que o software será executado em uma única arquitetura de hardware, eles podem estar negligenciando o comportamento específico da arquitetura. Eles também podem perder problemas com o código que não aparecem com frequência nessa arquitetura.

Como resultado, eles podem não encontrar certas anomalias simples, como condições de corridaporque o hardware está se comportando de uma maneira que oculta problemas em potencial quando dois ou mais processos tentam acessar o mesmo recurso de forma assíncrona.

O substituto da OpenElemetria para os agentes da APM que costumavam se reunir na parte de trás da memória como fiapos em um pincel, é o Componente de colecionador. Escrito em Golang, o Collector é um agente que serve como ponto de destino para as bibliotecas de instrumentação exportarem seus dados de telemetria.

Quando o colecionador foi compilado pela primeira vez para o ARM64, lembra Toulmé, vários problemas de condição de corrida foram descobertos, devido à maneira diferente da maneira como os pipelines do processador X86 e ARM64 são manipulados e o número de núcleos disponíveis na CPU. Foi o primeiro indicador da equipe da Otel que a arquitetura do ARM lida com as condições de corrida de uma maneira muito diferente.

“Tivemos algum feedback antecipado dos clientes de que algumas das instrumentações de Opentelemetria não estavam funcionando bem no ARM porque havia muitos núcleos. Você passa de quatro núcleos para 128, 256 às vezes.”

Os mantenedores do projeto testaram e resolveram esses problemas usando os servidores da Ampere para todos os seus node.js, java e código Python. “Nos últimos dois anos”, disse Toulmé, “vimos uma enorme melhoria no apoio ao ARM”.

A solução Microvm

Para a equipe de Opentelemetria para trazer seu suporte de CI/CD para o ARM64 até a paridade com o X86, eles colaboraram com Desenvolvedor principal acionado Alex Ellis. Atualizado é uma plataforma que fornece corredores hospedados para um dos sistemas de IC/CD mais comuns, ações do GitHub, usando a escolha das arquiteturas de processador. Isso facilita a criação e teste de projetos em ambientes de servidores heterogêneos. Atualmente, realiza isso executando processos em microvms que são isolados de outras cargas de trabalho em execução no mesmo host.

“Vimos isso de clientes que experimentaram o operador Kubernetes do Github”, observou Ellis, que também é o criador da estrutura de microsserviços sem servidor OpenFAAs. “Tudo bem até o ponto em que você constrói ou executa um contêiner e, em seguida, precisa dos privilégios elevados tão altos que pode comprometer todos os nó em todo o cluster. E muitas pessoas apenas colocam a cabeça na areia sobre isso”.

“É disso que se trata”, continuou Ellis. “Em vez disso, são usados ​​microvms que têm suas próprias instâncias do Docker, que são completamente isoladas e existem apenas a vida inteira da construção – então elas são completamente destruídas. Há alguma sobrecarga no uso de um microvm, mas principalmente, o IC tem mais sobre velocidade da CPU e com RAM suficientes para se encaixar em seus programas do que o RAW I/O”.

A encenação de todos os componentes do código do aplicativo em pacotes virtualizados os separa de redes mais amplas, especialmente a Internet pública, com pelo menos uma camada de abstração. Isso resulta em um ambiente de corrida mais seguro para componentes de software para todas as arquiteturas de processador, incluindo x86 e ARM64.

Pague

Agora, a equipe do OpenElemetria pode identificar problemas comportamentais que estavam sendo perdidos por testes no x86. Como resultado, os clientes que executam o Opentelemetria na produção estão experimentando um código mais confiável e estável. Isso é verdade não apenas para todas as arquiteturas do processador, mas para todos os sistemas operacionais: identificar e corrigir bugs como condições de corrida, que podem ser mais fáceis de acionar no ARM64, tem o benefício de melhorar o projeto para todos os sistemas de arquitetura e operação.

Toulmé, da OpenElemetria, diz que sua equipe viu 15 % de economia de custos apenas ao reduzir a quantidade, tamanho, escala e alocação de memória de instâncias de implantação, depois de passar de X86 para ARM64. Agora, a equipe pode trabalhar em direção a uma situação em que pode responder aos problemas dos clientes baseados em ARM64 com os mesmos cuidados e atenção que prestam aos problemas de clientes baseados em x86. Esse é o objetivo da OpenElemetria: suporte de nível 1 até o final de 2025.

“Estamos muito felizes com os resultados”, disse Toulmé. “Vemos que o desempenho no ARM é muito maior do que o que teríamos com os servidores legais x86. Para nossos clientes, publicamos imagens do Docker que suportam o Linux/AMD64, mas também todas as variantes do ARM64. Estamos vendo uma ótima aceitação. Em termos de downloads, sem o download de um custo.

Written by

Categorias