Medindo o Desempenho do SO em Aplicações de HPC
A ferramenta STaKTAU simplifica a medição de desempenho para aplicativos HPC que interagem com o sistema operacional.
― 6 min ler
Índice
Aplicações de Computação de Alto Desempenho (HPC) têm um papel crucial na resolução de problemas grandes e complexos. Essas aplicações geralmente dependem de várias interfaces e ambientes de programação pra funcionar bem. Um fator importante no desempenho dessas aplicações é quanto tempo elas passam no Sistema Operacional (SO). Entender esse uso de tempo pode ajudar a identificar áreas que precisam de melhora.
Importância da Medição de Desempenho
Pra melhorar o desempenho das aplicações, os desenvolvedores precisam observar como o código deles tá rodando. Isso envolve coletar várias métricas, como o tempo gasto em diferentes partes do código, como os dados se movem no sistema e o uso do hardware, como a performance do cache. Embora muitas ferramentas de desempenho foquem em analisar a aplicação em si, também é essencial estudar como o SO afeta o desempenho.
Aspectos-chave a considerar incluem quanto tempo o SO gasta gerenciando processos, movendo memória, alocando recursos e lidando com operações de entrada/saída. Analisar essas áreas pode dar uma visão mais completa do desempenho da aplicação.
Desafios na Medição do Desempenho do SO
Medir o tempo gasto nas operações de nível de SO apresenta desafios. Os métodos anteriores de análise frequentemente exigiam modificar o kernel do SO, o que pode ser complexo e não portátil entre diferentes versões do kernel. Isso significa que os desenvolvedores tinham que ajustar suas ferramentas toda vez que o kernel era atualizado, gerando mais trabalho.
Uma nova abordagem foi desenvolvida pra tornar esse processo mais simples e eficaz, permitindo medições de desempenho sem precisar mudar o código do kernel.
Métodos Tradicionais de Análise de Desempenho
A análise de desempenho geralmente envolve duas técnicas principais: profiling e tracing. O profiling fornece informações sobre quanto tempo é gasto em diferentes partes do programa, enquanto o tracing registra eventos com timestamps. Ambos os métodos coletam dados durante a execução do programa, usando ferramentas projetadas pra isso.
Aplicações HPC costumam usar interfaces de programação que ajudam ferramentas de desempenho a coletar dados. Por exemplo, a interface MPI inclui rotinas que permitem a análise de desempenho sem interromper o fluxo da aplicação. Também existem interfaces de callback em alguns ambientes de programação que acionam ações em pontos específicos da execução.
Técnicas Avançadas de Medição
Chamadas de Sistema são um aspecto vital de como as aplicações se comunicam com o sistema operacional. Elas permitem que as aplicações solicitem serviços que precisam de privilégios mais altos. No entanto, técnicas de medição tradicionais costumam não capturar o que acontece durante essas chamadas. A nova abordagem foca em medir o tempo gasto dentro das chamadas de sistema e também pode ser usada pra analisar outras rotinas do SO.
O SystemTap é uma ferramenta que permite monitorar o kernel do Linux. Ela usa uma linguagem de script única pra definir ações em eventos específicos do kernel. Isso significa que os desenvolvedores podem coletar informações detalhadas sobre a atividade do kernel sem precisar de acesso root, desde que estejam no grupo de usuários certo.
Design da Ferramenta STaKTAU
O STaKTAU é uma ferramenta de análise de desempenho que coleta dados sobre quanto tempo as aplicações passam no SO. Ele tem duas partes principais: a ferramenta de coleta de dados e a interface do usuário, que exibe as informações coletadas.
Quando uma chamada de sistema é feita, o STaKTAU inicia um timer. Quando a chamada é concluída, ele marca o fim do timer e armazena as informações. Esses dados são mantidos no espaço do kernel e precisam ser movidos pro espaço do usuário pra análise. Um dos principais desafios é transferir esses dados de forma eficiente sem desacelerar o sistema.
Pra resolver esse problema, o STaKTAU usa um buffer pra armazenar os dados coletados. Assim que o buffer tá cheio ou no final da execução da aplicação, os dados são enviados pra análise. Esse método ajuda a evitar perda de dados enquanto mantém o sistema funcionando suavemente.
Avaliação de Desempenho do STaKTAU
Pra ver quão bem o STaKTAU funciona, avaliações foram feitas usando dois tipos de aplicações: um benchmark de computação simples e uma aplicação de ray tracing mais complexa. O objetivo era ver quanto overhead o STaKTAU adiciona ao tempo de execução.
O primeiro benchmark, uma computação simples, não fazia muita coisa pesada, mas focava principalmente no gerenciamento de threads. O segundo benchmark, ray tracing, passava mais tempo fazendo cálculos reais. Nos testes, foi descoberto que o overhead causado pelo STaKTAU era pequeno, especialmente pra aplicações que eram intensivas em computação.
A avaliação envolveu rodar cada aplicação várias vezes pra reunir dados consistentes. Pra a tarefa de benchmarking mais simples, houve um overhead mais notável, já que dependia muito das chamadas de sistema. Em contrapartida, a tarefa de ray tracing mostrou pouca diferença no tempo de execução quando o STaKTAU estava ativo.
Conclusões
O STaKTAU oferece uma maneira eficaz de medir como aplicações HPC interagem com o sistema operacional. Diferente dos métodos anteriores que exigiam modificações no kernel, o STaKTAU opera de uma maneira mais portátil, facilitando seu uso em diferentes versões de kernel sem necessidade de mudanças extensas.
A análise de desempenho mostra que, pra muitas aplicações focadas em computação, o overhead de usar o STaKTAU é mínimo. No entanto, é essencial reconhecer que aplicações que dependem muito de chamadas de sistema podem enfrentar impactos de desempenho mais notáveis.
Essa ferramenta fornece uma visão independente de quanto tempo as aplicações passam no kernel, mas também pode ser combinada com outras ferramentas de análise de desempenho pra obter insights mais profundos. Ao combinar diferentes ferramentas, os desenvolvedores podem identificar onde no código deles ocorre a interação com o kernel e como isso afeta o desempenho geral.
O desenvolvimento do STaKTAU reflete um passo significativo na medição de desempenho para aplicações HPC, facilitando para os desenvolvedores otimizar seu código de forma eficaz.
Título: STaKTAU: profiling HPC applications' operating system usage
Resumo: This paper presents a approach for measuring the time spent by HPC applications in the operating system's kernel. We use the SystemTap interface to insert timers before and after system calls, and take advantage of its stability to design a tool that can be used with multiple versions of the kernel. We evaluate its performance overhead, using an OS-intensive mini-benchmark and a raytracing mini app.
Autores: Camille Coti, Kevin Huck, Allen D. Malony
Última atualização: 2023-04-21 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2304.11205
Fonte PDF: https://arxiv.org/pdf/2304.11205
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.