Sobre o projeto

O Parca Agent é um profiler de amostragem sempre ativo construído sobre eBPF. Ele captura dados brutos de profiling com baixo overhead, observando stack traces de espaço de usuário e espaço de kernel aproximadamente 19 vezes por segundo, e constrói perfis em formato pprof a partir dos dados extraídos. Os dados coletados podem ser visualizados por meio de endpoints HTTP locais ou enviados a um servidor Parca para consulta e análise de longo prazo. Requisitos: kernel Linux 5.3+ com BTF. O agente deve ser executado como root ou com CAP_SYS_ADMIN; o projeto documenta considerações de segurança e um processo de relato de vulnerabilidades. O suporte a linguagens é amplo e em evolução, incluindo C, C++, Go (com suporte estendido), Rust, .NET, Deno, Erlang, Java, Julia, Node.js, Wasmtime, PHP 8+, Ruby e Python. Perfis de CPU estão disponíveis, com uso de rede e alocações indicados como planejados. Informações específicas de runtime, como goroutines, exigem instrumentação explícita. A configuração pode ser fornecida por meio de flags de linha de comando ou de um arquivo YAML via --config-path; as flags têm precedência sobre os valores do arquivo. As opções documentadas abrangem logging, endereço HTTP, frequência e duração do profiling, profiling probabilístico, rótulos de metadados, armazenamento local e remoto, tratamento de debuginfo, exportação OTLP, ajuste de buffer e mapas eBPF, modo offline e instrumentação de lançamento CUDA. Os perfis sempre carregam rótulos como node, comm, cpu, thread_id e thread_name, com rótulos externos opcionais. O relabeling no estilo Prometheus pode anexar um grande conjunto de metadados de descoberta, incluindo detalhes de processos, informações do kernel do sistema e atributos de contêineres Kubernetes, Docker, containerd e LXC. Duas configurações de exemplo são fornecidas: uma promovendo metadados do Kubernetes sob os próprios nomes de rótulos do agente, e outra usando nomes de convenções semânticas do OpenTelemetry para exportação OTLP. O código de espaço de usuário é licenciado sob Apache 2; os profilers eBPF de espaço de kernel são GPLv2. O projeto credita o Inspektor Gadget como inspiração.