SYSTEM junto com comandos de quatro letras (4LW) no Keeper.
Amostragem de alocações e gravação de perfis de heap
jemalloc, precisará iniciar o ClickHouse/Keeper com o profiling ativado usando a variável de ambiente MALLOC_CONF:
jemalloc amostrará as alocações e armazenará as informações internamente.
Você pode instruir o jemalloc a gravar o perfil atual executando:
- ClickHouse
- Keeper
/tmp/jemalloc_clickhouse._pid_._seqnum_.heap, em que _pid_ é o PID do ClickHouse e _seqnum_ é o número de sequência global do perfil de heap atual.
Para o Keeper, o arquivo padrão é /tmp/jemalloc_keeper._pid_._seqnum_.heap e segue as mesmas regras.
Um local diferente pode ser definido adicionando a opção prof_prefix à variável de ambiente MALLOC_CONF.
Por exemplo, se você quiser gerar perfis na pasta /data, em que o prefixo do nome do arquivo será my_current_profile, poderá executar o ClickHouse/Keeper com a seguinte variável de ambiente:
Analisando perfis de heap
jemalloc chamada jeprof. Ela pode ser instalada de várias maneiras:
- Usando o gerenciador de pacotes do sistema
- Clonando o repositório do jemalloc e executando
autogen.sha partir da pasta raiz. Isso disponibilizará o scriptjeprofdentro da pastabin
O
jeprof usa addr2line para gerar stacktraces, o que pode ser bastante lento.
Se esse for o caso, recomenda-se instalar uma implementação alternativa da ferramenta.jeprof.
Recomenda-se executar jeprof --help para obter informações sobre o uso e as várias opções oferecidas pela ferramenta.
Em geral, o comando jeprof é usado da seguinte forma:
base:
Exemplos
- se você quiser gerar um arquivo de texto com cada procedimento escrito em uma linha:
- se você quiser gerar um arquivo PDF com um gráfico de chamadas:
Gerando um flame graph
jeprof permite gerar stacks colapsadas para criar flame graphs.
Você precisa usar o argumento --collapsed:
flamegraph.pl:
Controlando o profiler de alocação em tempo de execução
- ClickHouse
- Keeper
- ClickHouse
- Keeper
prof_active, que vem habilitada por padrão.
Por exemplo, se você não quiser coletar amostras de alocação durante a inicialização, mas apenas depois, poderá habilitar o profiler. Você pode iniciar o ClickHouse/Keeper com a seguinte variável de ambiente:
Opções adicionais para o profiler
jemalloc oferece várias opções relacionadas ao profiler. Elas podem ser controladas modificando a variável de ambiente MALLOC_CONF.
Por exemplo, o intervalo entre as amostras de alocação pode ser controlado com lg_prof_sample.
Se quiser gerar o perfil de heap a cada N bytes, você pode habilitá-lo com lg_prof_interval.
Recomenda-se consultar a página de referência do jemalloc para obter a lista completa de opções.
Outros recursos
jemalloc de várias formas.
Tabela do sistema asynchronous_metrics
Tabela do sistema jemalloc_bins
Prometheus
jemalloc de asynchronous_metrics também são expostas por meio do endpoint Prometheus, tanto no ClickHouse quanto no Keeper.
Referência
Comando 4LW jmst no Keeper
jmst, que retorna estatísticas básicas do alocador: