SYSTEM sont disponibles, ainsi que des commandes à quatre lettres (4LW) dans Keeper.
Échantillonnage des allocations et écriture des profils du tas
jemalloc, vous devez démarrer ClickHouse/Keeper avec le profilage activé à l’aide de la variable d’environnement MALLOC_CONF :
jemalloc effectuera un échantillonnage des allocations et stockera les informations en interne.
Vous pouvez demander à jemalloc de vider le profile actuel en exécutant :
- ClickHouse
- Keeper
/tmp/jemalloc_clickhouse._pid_._seqnum_.heap, où _pid_ est le PID de ClickHouse et _seqnum_ le numéro de séquence global du profil de tas actuel.
Pour Keeper, le fichier par défaut est /tmp/jemalloc_keeper._pid_._seqnum_.heap et suit les mêmes règles.
Un autre emplacement peut être défini en ajoutant l’option prof_prefix à la variable d’environnement MALLOC_CONF.
Par exemple, si vous souhaitez générer des profiles dans le dossier /data, avec my_current_profile comme préfixe du nom de fichier, vous pouvez exécuter ClickHouse/Keeper avec la variable d’environnement suivante :
Analyse des profils de tas
jemalloc appelé jeprof. Il peut être installé de plusieurs façons :
- À l’aide du gestionnaire de paquets du système
- En clonant le dépôt jemalloc et en exécutant
autogen.shdepuis le dossier racine. Cela fournit le scriptjeprofdans le dossierbin
jeprof utilise addr2line pour générer des traces de pile, ce qui peut être très lent.
Si c’est le cas, il est recommandé d’installer une implémentation alternative de cet outil.jeprof permet de générer de nombreux formats différents à partir d’un profil de tas.
Il est recommandé d’exécuter jeprof --help pour obtenir des informations sur son utilisation et sur les différentes options proposées par l’outil.
De manière générale, la commande jeprof s’utilise comme suit :
base :
Exemples
- si vous voulez générer un fichier texte avec une procédure par ligne :
- si vous souhaitez générer un fichier PDF avec un graphe des appels :
Génération d’un flame graph
jeprof permet de générer des piles d’appels compactées pour créer des flame graphs.
Vous devez utiliser l’argument --collapsed :
flamegraph.pl :
Contrôler le profileur d’allocation à l’exécution
- ClickHouse
- Keeper
- ClickHouse
- Keeper
prof_active, activée par défaut.
Par exemple, si vous ne souhaitez pas échantillonner les allocations au démarrage, mais seulement ensuite, vous pouvez activer le profileur. Vous pouvez démarrer ClickHouse/Keeper avec la variable d’environnement suivante :
Options supplémentaires pour le profileur
jemalloc propose de nombreuses options liées au profileur. Elles peuvent être configurées en modifiant la variable d’environnement MALLOC_CONF.
Par exemple, l’intervalle entre les échantillons d’allocation peut être réglé avec lg_prof_sample.
Si vous souhaitez générer un dump du profil de tas tous les N octets, vous pouvez l’activer avec lg_prof_interval.
Il est recommandé de consulter la page de référence de jemalloc pour obtenir la liste complète des options.
Autres ressources
jemalloc de différentes manières.
Table système asynchronous_metrics
Table système jemalloc_bins
Prometheus
jemalloc provenant de asynchronous_metrics sont également exposées via le endpoint Prometheus dans ClickHouse et Keeper.
Référence
Commande 4LW jmst dans Keeper
jmst, qui renvoie les statistiques de base de l’allocateur :