Tag: desempenho

  • Yandex Lança YaFF: Formato Wire Zero-Copy para Protobuf com Leitura 22× Mais Rápida

    Yandex Lança YaFF: Formato Wire Zero-Copy para Protobuf com Leitura 22× Mais Rápida

    Yandex YaFF

    A Yandex acaba de abrir o código do YaFF (Yet another Flat Format), um formato wire zero-copy para o ecossistema Protobuf. Com licença Apache 2.0 e implementação inicial em C++ (v0.1.0), o YaFF promete leituras até 22× mais rápidas que o Protobuf tradicional e 3,8× mais rápidas que o FlatBuffers.

    O problema que o YaFF resolve

    Em backends de alta carga, o parsing de Protobuf pode consumir dois dígitos percentuais de CPU — o que, em escala, se traduz em milhares de núcleos físicos. A alternativa zero-copy mais comum é o FlatBuffers (também do Google), mas ele não é um substituto direto para Protobuf: exige manutenção de um schema separado e uma camada de conversão adicional.

    O YaFF ataca exatamente essa lacuna: leituras zero-copy preservando a semântica do Protobuf. O arquivo .proto continua sendo a fonte única da verdade — o formato muda apenas como os dados são organizados na memória.

    Como funcionam os layouts

    O YaFF oferece quatro layouts que determinam como a mensagem é armazenada no buffer:

    • Fixed: struct empacotada simples, sem header e schema congelado. Ideal para primitivas pequenas inline.
    • Flat: adiciona um header de 2 bytes e suporta evolução de schema. Melhor para dados densos em caminhos quentes.
    • Sparse: acessa campos via tabela de metadados (6 bytes de overhead), adequado para schemas esparsos com evolução livre.
    • Dynamic (padrão): seleciona Flat ou Sparse em tempo de execução, usando Flat enquanto o schema permitir.

    Benchmarks impressionantes

    A Yandex publicou benchmarks reproduzíveis em um AMD EPYC 7713 com Clang 20.1.8. Os números mostram nanossegundos medianos por leitura:

    Formato Tempo de leitura (ns) Lentidão vs struct C++
    Struct C++ pura 8,14 1,0×
    YaFF Flat Layout 9,79 1,2×
    YaFF Sparse Layout 21,23 2,6×
    FlatBuffers 37,30 4,6×
    Protobuf 219,35 26,9×

    O YaFF Flat Layout fica a apenas 1,2× da struct C++ pura — um feito notável para um formato que mantém compatibilidade com Protobuf.

    Caso de uso real: economia de 10-20% de CPU

    O YaFF já roda no sistema de recomendação de anúncios da Yandex, onde reporta economia de 10 a 20% de CPU em escala de produção. A adoção é incremental: basta introduzi-lo em um caminho quente, mantendo a conversão bidirecional com Protobuf nas bordas.

    O código em ação

    #include "feed.pb.h"   // gerado pelo protoc
    #include "feed.yaff.h"  // gerado pelo yaff_generate()
    
    // 1. Serializa uma mensagem Protobuf existente para buffer YaFF
    feed::FeedResponse proto = LoadFeedResponse();
    const auto buffer = yaff::Serialize<protoyaff::feed::FeedResponse>(proto);
    
    // 2. Lê campos diretamente do buffer — sem parsing
    const auto& response = yaff::ReadMessage<protoyaff::feed::FeedResponse>(buffer.Data());
    for (const auto& item : response.items()) {
        std::string_view title = item.title();
        std::string_view author = item.author().name();
    }
    
    // 3. Converte de volta para Protobuf quando necessário
    feed::FeedResponse restored;
    response.ParseTo(restored);
    

    Disponibilidade

    O YaFF está disponível no GitHub com documentação completa em yaff.tech. A integração é feita via CMake (find_package) ou Conan. A geração de código utiliza protobuf_generate() seguido de yaff_generate(), com os tipos gerados no namespace protoyaff::<package>.


    Fonte: MarkTechPost | Repositório: GitHub

  • Python 3.14 e seu Novo Compilador JIT: O Fim da Lentidão?

    Python 3.14 e seu Novo Compilador JIT: O Fim da Lentidão?

    Python 3.14 e seu Novo Compilador JIT: O Fim da Lentidão?

    O lançamento do Python 3.14 marca um ponto importante na evolução de uma das linguagens de programação mais populares do mundo. Embora o Python seja reconhecido por sua legibilidade e vasto ecossistema, sua velocidade de execução sempre foi o “elefante na sala”. Com a versão 3.14, a equipe do CPython entregou duas das funcionalidades mais aguardadas dos últimos tempos.

    O fim do GIL

    A verdadeira concorrência agora está disponível no Python. O GIL (Global Interpreter Lock), que por décadas limitou a execução paralela a uma única thread por vez, foi removido de forma opcional. Isso significa que você pode finalmente aproveitar múltiplos núcleos de CPU em Python sem workarounds como multiprocessing.

    O compilador JIT (Just-In-Time)

    O JIT é a grande novidade que vamos explorar aqui. Trata-se de um recurso experimental que agora vem empacotado diretamente nos instaladores oficiais — resultado de anos de preparação arquitetural da equipe do CPython.

    Como funciona?

    No Python tradicional (CPython), seu código é compilado para bytecode, que é interpretado linha por linha pela máquina virtual. O JIT muda esse fluxo: ele monitora quais partes do código são executadas com mais frequência (os “hot paths”). Quando uma função ou loop é considerado “quente”, o JIT traduz o bytecode para código de máquina nativo — instruções que a CPU entende diretamente. Na próxima execução, não há interpretação: o código roda diretamente.

    Copy-and-patch

    O JIT do Python 3.14 usa uma técnica chamada “copy-and-patch”, que o torna leve e portátil entre diferentes arquiteturas de CPU sem precisar de um backend de compilação complexo como o LLVM. Isso é fundamental para manter a simplicidade que a comunidade Python valoriza.

    O que mudou em relação ao 3.13?

    O Python 3.13 já tinha um JIT experimental, mas ele vinha desabilitado por padrão — era preciso compilar o CPython a partir do código-fonte com flags específicas como --enable-experimental-jit. No 3.14, o JIT está disponível nos instaladores oficiais .msi (Windows) e .pkg (macOS), bastando ativá-lo com uma flag de runtime.

    Benchmarks iniciais

    Os primeiros testes mostram ganhos expressivos em workloads com loops pesados e operações numéricas — exatamente onde o Python tradicional mais sofre. Funções matemáticas, processamento de dados e algoritmos que executam muitas iterações são os maiores beneficiados.

    Vale a pena migrar?

    Se você trabalha com ciência de dados, machine learning ou qualquer área que dependa de processamento intensivo em Python, o 3.14 com JIT ativado merece sua atenção. O fato de ser opcional significa que você pode testar sem riscos: ative o JIT, rode seus benchmarks e decida se o ganho compensa.

    O Python está ficando mais rápido — e o JIT do 3.14 é a prova concreta de que a linguagem está evoluindo sem perder sua essência.

  • Como a Valkey Reconstruiu sua Hashtable para Tirar o Máximo do Hardware Moderno

    Evolução das Estruturas de Dados em Sistemas de Cache

    Madelyn Olson, engenheira principal da AWS e mantenedora do projeto Valkey, apresentou na QCon San Francisco 2025 uma análise profunda sobre a reconstrução da hashtable usada pela Valkey, uma alternativa ao Redis. O foco principal foi adaptar estruturas de dados clássicas para a realidade do hardware atual, priorizando eficiência de memória e desempenho sem sacrificar a estabilidade e compatibilidade.

    Contexto: Do Redis ao Valkey

    Valkey surgiu em 2024 após mudanças na licença do Redis, levando ex-contribuidores a criar uma versão que mantém compatibilidade com comandos e funcionalidades do Redis, mas com liberdade para inovações técnicas. O objetivo era modernizar a base, especialmente a estrutura central que gerencia o armazenamento de dados — a hashtable.

    Desafios das Hashtables Tradicionais

    As hashtables clássicas, como as usadas em Redis, são baseadas em técnicas conhecidas desde os anos 2000, com muitos ponteiros e acessos dispersos na memória. Essa estrutura gera um alto overhead de ponteiros (endereços), que prejudica a densidade de armazenamento e a eficiência do cache da CPU, impactando o desempenho.

    Olson destacou que, apesar dessas limitações, a prioridade era não regredir em estabilidade e compatibilidade, pois caches são componentes críticos que não podem falhar ou apresentar comportamentos inesperados.

    Características do Valkey e o Cenário de Uso

    • Tamanho médio das chaves: cerca de 16 bytes, baseado em dados reais do AWS ElastiCache.
    • Tamanho médio dos valores: mediana de 80 bytes, com variações amplas.
    • Suporte a TTL (time to live): variado, incluindo itens voláteis e não voláteis, com diferentes durações.
    • Compatibilidade: suporte a comandos complexos e tipos de dados variados, como conjuntos e sorted sets.

    A Nova Abordagem: “Swedish” Tables

    Para aumentar a densidade de memória e reduzir o número de ponteiros, a equipe adotou o conceito das chamadas “Swedish” tables, que são hashtables cache-aware, projetadas para minimizar cache misses e maximizar o uso eficiente da memória. Essa estrutura evita o tradicional pointer-chasing ao manter os dados mais compactos e sequenciais, facilitando a prefetching de memória pelo processador.

    Insights sobre Intuição de Sistemas e Prefetching

    Olson enfatizou a importância de uma boa intuição sobre o funcionamento do hardware e do sistema operacional para otimizar estruturas de dados. O entendimento detalhado de como a CPU lida com cache, prefetching e alinhamento de memória foi fundamental para garantir ganhos reais de desempenho.

    Testes Rigorosos para Sistemas Críticos

    Como o Valkey é usado em aplicações onde o cache não pode falhar, a equipe investiu em testes extensivos para assegurar que a nova implementação não introduzisse regressões ou inconsistências. Isso inclui testes de compatibilidade com comandos avançados e cenários de uso variados, garantindo que a migração para a nova hashtable seja transparente para os usuários.

    Impactos Práticos e Próximos Passos

    Com essa modernização, o Valkey consegue oferecer melhor uso da memória e maior velocidade, sem perder a robustez necessária para ambientes de produção. A iniciativa demonstra como é possível atualizar estruturas de dados clássicas para aproveitar o hardware moderno, beneficiando sistemas de cache e bancos de dados em geral.

    Links úteis

  • Análise dos Intel Core Ultra 270K e 250K Plus: desempenho sólido com ressalvas no custo total

    Novos processadores Intel Core Ultra 270K e 250K Plus chegam com bom desempenho

    A Intel lançou recentemente os processadores Core Ultra 270K e 250K Plus, que integram a linha Arrow Lake de CPUs para desktops. Essas novas unidades prometem entregar um desempenho competitivo para usuários que buscam uma boa relação custo-benefício em tarefas que vão desde produtividade até jogos moderados.

    Arquitetura e especificações técnicas

    Os processadores Core Ultra 270K e 250K Plus são baseados na arquitetura Arrow Lake, sucessora da linha Core Ultra 200. Eles apresentam melhorias na eficiência energética e na capacidade de processamento, com múltiplos núcleos de alto desempenho e núcleos de eficiência que trabalham em conjunto para otimizar o uso dos recursos.

    O modelo 270K é o mais potente dos dois, oferecendo maior frequência de operação e mais núcleos, enquanto o 250K Plus traz uma configuração um pouco mais modesta, mas ainda assim capaz de atender a demandas exigentes.

    Desempenho e análise prática

    Testes indicam que ambos os processadores apresentam excelente desempenho para o preço sugerido, destacando-se em aplicações multitarefa, edição de vídeo e jogos que não exigem GPUs de última geração. A resposta rápida e a capacidade de lidar com cargas pesadas tornam essas CPUs atraentes para usuários que precisam de versatilidade no dia a dia.

    No entanto, a análise ressalta que o custo total para montar um sistema equilibrado com esses processadores pode ser significativamente maior devido ao preço dos componentes complementares, como memória RAM, unidades SSD e placas de vídeo. Assim, o valor final do investimento pode afastar parte do público que busca uma solução econômica completa.

    Considerações sobre custo-benefício e público-alvo

    Embora os Core Ultra 270K e 250K Plus ofereçam ótimo desempenho isoladamente, a recomendação é que os consumidores avaliem cuidadosamente o orçamento total para o computador, especialmente se precisarem investir em hardware adicional de alto custo. Para quem já possui uma configuração compatível ou não depende de componentes caros, essas CPUs representam uma atualização eficaz.

    Esses processadores são indicados para entusiastas de tecnologia, profissionais que trabalham com edição e criação de conteúdo, além de gamers casuais que não demandam GPUs topo de linha.

    Disponibilidade e onde encontrar

    Os processadores Intel Core Ultra 270K e 250K Plus já estão disponíveis em lojas especializadas e e-commerces. Para mais informações técnicas, especificações detalhadas e atualizações sobre drivers, o site oficial da Intel pode ser consultado em https://www.intel.com.

    Links úteis

  • Três Alertas Poderosos que Garantem a Estabilidade da Infraestrutura de Produção da Hugging Face

    A Hugging Face é reconhecida mundialmente por sua plataforma robusta e inovadora que impulsiona projetos de inteligência artificial. Manter a infraestrutura de produção estável e eficiente é um desafio constante, especialmente quando se trata de sistemas complexos e escaláveis. Neste artigo, vamos explorar três alertas essenciais que a Hugging Face utiliza para monitorar e proteger sua infraestrutura, garantindo alta disponibilidade e desempenho confiável.

    Introdução

    Em ambientes de produção, especialmente em empresas que lidam com inteligência artificial e aprendizado de máquina, a detecção precoce de falhas e anomalias é fundamental para evitar interrupções e perdas. A Hugging Face implementa um sistema de alertas que permite identificar problemas críticos rapidamente, facilitando a resposta ágil das equipes técnicas.

    Imagem relacionada ao artigo de HuggingFace
    Imagem de apoio da materia original.

    Por que os alertas são cruciais para a infraestrutura de produção?

    Alertas eficientes ajudam a:

    • Prevenir falhas graves: Identificando sinais de problemas antes que eles causem interrupções.
    • Reduzir o tempo de inatividade: Permitindo respostas rápidas para restaurar serviços.
    • Otimizar recursos: Monitorando o uso e evitando sobrecargas.
    • Garantir a experiência do usuário: Mantendo os serviços estáveis e responsivos.

    Os três alertas poderosos da Hugging Face

    1. Alerta de Latência Elevada

    Este alerta monitora o tempo de resposta dos serviços da Hugging Face. Quando a latência ultrapassa um limite definido, o sistema dispara uma notificação para a equipe responsável. Isso permite identificar rapidamente gargalos ou problemas de desempenho, que podem estar relacionados a sobrecarga do servidor, problemas de rede ou falhas em componentes específicos.

    2. Alerta de Erros de Aplicação

    Erros inesperados em aplicações podem indicar falhas graves ou bugs que impactam diretamente os usuários. A Hugging Face utiliza alertas que detectam picos incomuns na taxa de erros, como falhas HTTP 5xx, exceções não tratadas ou falhas em processos críticos. Isso possibilita uma investigação imediata para corrigir o problema antes que ele se propague.

    3. Alerta de Uso Excessivo de Recursos

    Monitorar o consumo de CPU, memória e armazenamento é vital para evitar sobrecargas que possam derrubar serviços. A Hugging Face configura alertas para avisar quando o uso de recursos ultrapassa determinados limites, permitindo que as equipes escalem a infraestrutura ou otimizem processos antes que a situação se torne crítica.

    Imagem relacionada ao artigo de HuggingFace
    Imagem de apoio da materia original.

    Como esses alertas são implementados na prática?

    A Hugging Face utiliza ferramentas modernas de monitoramento e observabilidade, como Prometheus, Grafana e sistemas de notificação integrados. A configuração dos alertas é baseada em métricas coletadas em tempo real, com regras ajustadas para minimizar falsos positivos e garantir que apenas incidentes relevantes sejam reportados.

    Além disso, a automação desempenha um papel importante, com scripts e playbooks que orientam as equipes sobre as ações imediatas a serem tomadas quando um alerta é disparado. Isso acelera a resolução e mantém a infraestrutura funcionando sem interrupções.

    Benefícios para a comunidade e para os usuários

    Ao investir em um sistema de alertas robusto, a Hugging Face assegura que seus serviços estejam sempre disponíveis e com alta performance. Isso não apenas beneficia a empresa internamente, mas também garante que desenvolvedores, pesquisadores e empresas que dependem da plataforma tenham uma experiência confiável e consistente.

    Conclusão

    Manter uma infraestrutura de produção estável é um desafio complexo, especialmente em um ambiente dinâmico como o da inteligência artificial. Os três alertas poderosos implementados pela Hugging Face — latência elevada, erros de aplicação e uso excessivo de recursos — são fundamentais para detectar e resolver problemas rapidamente.

    Esses mecanismos de monitoramento e resposta ágil são exemplos valiosos para qualquer organização que deseja garantir alta disponibilidade e qualidade em seus serviços. Investir em alertas eficazes é investir na confiança dos usuários e no sucesso contínuo da operação.