Ferramentas de Performance

Linux 6.15: Perf ganha nova dimensão com profiling de latência

Linux 6.15: Perf ganha nova dimensão com profiling de latência

O conjunto de ferramentas perf recebeu uma atualização significativa com a integração das mudanças para o kernel Linux 6.15. A novidade mais notável deste ciclo para a poderosa ferramenta de análise de desempenho é a introdução do conceito de profiling de latência, aproveitando informações do agendador do kernel. Esses dados de latência serão extremamente valiosos para engenheiros de software Linux que buscam otimizar a latência e o desempenho geral do sistema.

Introdução ao profiling de latência no perf

A nova opção --latency para o comando perf record, detalhada no pull request das ferramentas perf para o Linux 6.15, visa mostrar os impactos no tempo de parede (wall-time) em vez do tempo de CPU. Ao rastrear as trocas de contexto, o perf agora pode ponderar as amostras e identificar qual parte do código contribuiu mais para a latência de execução. Tudo sobre o que é o kernel Linux de baixa latência.

Como funciona a ponderação de amostras

O valor (período) de cada amostra é ajustado ao ser dividido pelo número de execuções paralelas no instante da coleta. O nível de paralelismo é determinado e registrado no perf report através dos eventos de sched-switch. Essa abordagem tem como efeito reduzir a influência das partes do código que são executadas em paralelo e, consequentemente, aumentar a representatividade das execuções seriais no perfil.

Foco no profiling de processos

Inicialmente, o profiling de latência está limitado à análise de processos individuais. O profiling em nível de sistema (system-wide) ainda não é suportado nesta versão. Para ativar essa nova funcionalidade, basta adicionar a opção --latency ao comando perf record.

A distinção entre tempo de parede (wall clock time) e tempo de CPU

Dmitry Vyukov, do Google, que trabalhou nessa implementação, explicou a importância do profiling de latência, diferenciando-o do tradicional profiling de CPU. Enquanto o tempo de CPU contabiliza o tempo total de processamento utilizado pelos núcleos, o tempo de parede reflete a experiência real do usuário, o tempo decorrido do início ao fim de uma tarefa. Em sistemas multi-core e com múltiplas threads, essas métricas podem divergir significativamente.

Por que o profiling de latência é crucial

Otimizar a sobrecarga de CPU melhora o throughput (vazão) do sistema, enquanto a otimização da sobrecarga do tempo de parede impacta diretamente a latência (tempo de resposta). Esses perfis são complementares, mas não substituíveis. Vyukov listou exemplos onde o profiling de latência é essencial: otimização da latência de build, requisições de servidor, treinamento e inferência de Machine Learning, e o tempo de execução de programas de linha de comando. Nesses cenários, o perfil de CPU pode ser inútil ou até mesmo enganoso.

Detalhes da implementação

A implementação envolve a coleta de informações sobre trocas de contexto durante a execução do perf record. Posteriormente, durante a geração do relatório (perf report), o nível de paralelismo (o número de threads rodando nas CPUs) é calculado. O peso de cada amostra é então dividido por esse nível de paralelismo, modelando a coleta de uma amostra por unidade de tempo de parede.

Utilização opcional e documentação

O profiling de CPU continua sendo o modo padrão do perf. Cabe aos usuários aprender sobre essa nova modalidade de profiling e utilizá-la quando apropriado. A nova documentação oferece detalhes adicionais sobre os relatórios de sobrecarga de CPU e latência. A comunidade aguarda com expectativa os insights que o perf record --latency trará para a otimização de sistemas Linux.

Emanuel Negromonte Autor
Autor
Jornalista especialista em Linux a mais de 20 anos. Fundador do SempreUpdate e entusiasta do software livre.