説明
jemalloc ヒーププロファイラ によってサンプリングされた、生存中の割り当て 1 件につき 1 行を返します。このテーブルを読み取ると、新しい ヒーププロファイル がフラッシュされます。対象となるのは profiler が有効な スレッド のみです (jemalloc_enable_profiler 設定または jemalloc_enable_global_profiler config) 。各行は、おおよそ weight 件分の類似した割り当てを表します。
カラム
trace(Array(UInt64)) — 割り当てを行ったバックトレースのアドレス。leaf frame が先頭に並びます (system.trace_log.traceと同じ規約) 。addressToSymbolとdemangleでシンボル化できます (allow_introspection_functionsが必要です) 。age_ns(UInt64) — プロファイルが flush された時点を基準とした、その割り当てが生存している時間 (ナノ秒) 。size(UInt64) — 要求された割り当てサイズ (バイト単位) 。usize(UInt64) — 利用可能なサイズ (バイト単位) 。すなわち、要求が切り上げられた先の size class のサイズです。size_class(UInt16) — size class の索引。小さい size classes の場合はsystem.jemalloc_bins.indexと結合できます。arena(UInt32) — その割り当てが供給されたアリーナの索引。thr_uid(UInt64) — 割り当てを行った スレッド の jemalloc 内部の一意な id。sample_interval(UInt64) — サンプル間で割り当てられたバイト数の平均。プロファイルの header から取得され、すべての行で同じ値になります。
alloc_time—now() - intDiv(age_ns, 1000000000)の別名。weight—1 / (1 - exp((-usize) / sample_interval))の別名。