DFTracer Aggregation Pipeline¶
Namespace: dftracer::utils::utilities::composites::dft::aggregators
For usage guide and examples, see DFTracer Aggregation Pipeline.
-
struct AggGlobalConfig¶
-
struct AggKeyView¶
Key view with resolved strings from the intern table. Lifetime: valid as long as aggregation_intern() exists (process lifetime).
-
struct AggMetricsFullView¶
Full metrics view including mean/m2 for stddev computation. Use for iter_aggregation which needs mean and stddev columns.
Public Functions
-
inline double dur_stddev() const¶
-
inline double size_stddev() const¶
-
inline double offset_stddev() const¶
Public Members
-
std::uint64_t count¶
-
std::uint64_t dur_total¶
-
std::uint64_t dur_min¶
-
std::uint64_t dur_max¶
-
double dur_mean¶
-
double dur_m2¶
-
std::uint64_t size_total¶
-
std::uint64_t size_min¶
-
std::uint64_t size_max¶
-
double size_mean¶
-
double size_m2¶
-
std::uint64_t offset_total¶
-
std::uint64_t offset_min¶
-
std::uint64_t offset_max¶
-
double offset_mean¶
-
double offset_m2¶
-
std::uint64_t ts¶
-
std::uint64_t te¶
-
inline double dur_stddev() const¶
-
struct AggMetricsView¶
Lightweight metrics view for Arrow export - only the fields needed.
-
struct AggregationBatch¶
Public Functions
-
inline AggregationBatch filter(const common::query::Query &query) const¶
Filter entries by query, returning a new batch with matching entries.
-
common::arrow::ArrowExportResult to_arrow() const¶
-
common::arrow::ArrowExportResult to_dfanalyzer_arrow(const DfanalyzerContext &ctx) const¶
Convert to dfanalyzer-compatible Arrow format. Outputs columns matching dfanalyzer schema:
Events/Profiles: cat, func_name, pid, tid, file_hash, host_hash, file_name, host_name, proc_name, io_cat, acc_pat, count, time, size, time_min, time_max, size_min, size_max, time_range, time_start, time_end
System: host_hash, time_range, sys_cpu_*, sys_mem_*
Public Members
-
std::vector<AggregationEntry> entries¶
-
AggregationBatchType batch_type = AggregationBatchType::EVENT¶
-
std::size_t total_events_processed = 0¶
-
std::size_t total_files_processed = 0¶
-
std::size_t total_bytes_processed = 0¶
-
bool has_approximated_entries = false¶
-
const std::vector<std::uint32_t> *global_extra_key_ids = nullptr¶
-
const std::vector<std::string> *global_custom_metric_names = nullptr¶
-
inline AggregationBatch filter(const common::query::Query &query) const¶
-
struct AggregationConfig¶
Public Functions
-
inline std::uint32_t compute_hash() const¶
Public Members
-
std::uint64_t time_interval_us = 1000000¶
-
bool use_relative_time = false¶
-
std::uint64_t reference_timestamp = 0¶
-
bool normalize_time = false¶
-
std::vector<std::string> extra_group_keys¶
-
std::vector<std::string> custom_metric_fields¶
-
bool track_default_args = true¶
-
bool compute_statistics = true¶
-
bool compute_percentiles = false¶
-
double sketch_accuracy = 0.01¶
-
std::vector<double> percentiles = {0.25, 0.5, 0.75, 0.90}¶
-
std::vector<BoundaryEventConfig> boundary_events¶
-
bool track_process_parents = true¶
-
std::string output_format = FORMAT_JSON¶
-
inline std::uint32_t compute_hash() const¶
-
struct AggregationEntry¶
Public Functions
-
AggregationEntry() = default¶
-
inline AggregationEntry(AggregationKey k, AggregationMetrics m)¶
-
inline common::query::ValueMap to_value_map() const¶
Create a ValueMap from the key and metrics for query evaluation. Includes cat, name, pid, tid, hhash, fhash, time_bucket, extra_keys, and aggregation metrics (count, dur_total, dur_min, dur_max, etc.).
Public Members
-
AggregationKey key¶
-
AggregationMetrics metrics¶
-
bool is_approximated = false¶
-
CountConfidenceInterval count_ci¶
-
AggregationEntry() = default¶
-
struct AggregationKey¶
Public Functions
-
inline bool operator==(const AggregationKey &other) const¶
-
AggregationKey() = default¶
-
inline AggregationKey(const AggregationKey &other)¶
-
inline AggregationKey &operator=(const AggregationKey &other)¶
-
AggregationKey(AggregationKey&&) = default¶
-
AggregationKey &operator=(AggregationKey&&) = default¶
-
inline std::string_view cat() const¶
-
inline std::string_view name() const¶
-
inline std::string_view hhash() const¶
-
inline std::string_view fhash() const¶
-
inline bool operator==(const AggregationKey &other) const¶
-
struct AggregationKeyEqual¶
Public Functions
-
inline bool operator()(const AggregationKey &a, const AggregationKey &b) const¶
-
inline bool operator()(const AggregationKey &a, const AggregationKey &b) const¶
-
struct AggregationKeyHash¶
Public Types
-
using is_avalanching = void¶
Public Functions
-
inline std::size_t operator()(const AggregationKey &key) const¶
-
using is_avalanching = void¶
-
class AggregationMergeOperator : public rocksdb::MergeOperator¶
Public Functions
-
bool FullMergeV2(const MergeOperationInput &merge_in, MergeOperationOutput *merge_out) const override¶
-
bool PartialMerge(const ::rocksdb::Slice &key, const ::rocksdb::Slice &left_operand, const ::rocksdb::Slice &right_operand, std::string *new_value, ::rocksdb::Logger *logger) const override¶
-
inline const char *Name() const override¶
-
bool FullMergeV2(const MergeOperationInput &merge_in, MergeOperationOutput *merge_out) const override¶
-
struct AggregationMetrics¶
Public Functions
-
inline explicit AggregationMetrics(double relative_accuracy = 0.01)¶
-
inline AggregationMetrics(const AggregationMetrics &other)¶
-
inline AggregationMetrics &operator=(const AggregationMetrics &other)¶
-
AggregationMetrics(AggregationMetrics&&) = default¶
-
AggregationMetrics &operator=(AggregationMetrics&&) = default¶
-
void update_duration(std::uint64_t dur, bool compute_percentiles = false)¶
-
void update_size(std::uint64_t sz, bool compute_percentiles = false)¶
-
void update_offset(std::uint64_t off, bool compute_percentiles = false)¶
-
void update_timestamp(std::uint64_t event_ts, std::uint64_t dur)¶
-
void update_timestamp_clamped(std::uint64_t event_ts, std::uint64_t dur, std::uint64_t bucket_start, std::uint64_t bucket_size)¶
-
void update_custom_metric(std::string_view name, std::uint64_t value, bool compute_percentiles = false)¶
-
void merge_from(const AggregationMetrics &other)¶
Public Members
-
std::uint64_t count = 0¶
-
MetricStats duration¶
-
MetricStats size¶
-
MetricStats offset¶
-
std::uint64_t ts = std::numeric_limits<std::uint64_t>::max()¶
-
std::uint64_t te = 0¶
-
std::unique_ptr<std::unordered_map<std::string, std::string>> boundary_associations¶
-
std::uint64_t parent_pid = 0¶
-
std::unique_ptr<CustomMetricsMap> custom_metrics¶
-
double sketch_accuracy = 0.01¶
-
inline explicit AggregationMetrics(double relative_accuracy = 0.01)¶
-
struct AggregationRunInput¶
Public Members
-
std::string log_dir¶
-
std::string index_dir¶
-
AggregationConfig agg_config¶
-
::dftracer::utils::PipelineConfig pipeline_config¶
-
std::optional<std::string> output_file¶
-
std::string output_format = AggregationConfig::FORMAT_JSON¶
-
PerfettoEventFormat event_format = PerfettoEventFormat::COUNTER¶
-
bool compress_output = false¶
-
int compression_level = 1¶
-
bool force_rebuild = false¶
-
std::size_t checkpoint_size = 0¶
-
::dftracer::utils::Timer *stages = nullptr¶
-
bool verbose = true¶
-
std::string log_dir¶
-
struct AggregationRunResult¶
-
class AggregationVisitor : public dftracer::utils::utilities::composites::dft::DftEventVisitor¶
Public Functions
Legacy mode: flush directly to a live RocksDatabase via Merge/Put during parse. FLUSH_THRESHOLD commits the visitor’s own batch to bound memory. Used by
aggregator_utility.cpp,dftracer_aggregator.cpp,dftracer_organize.cpp.
-
AggregationVisitor(std::string staging_dir, std::string batch_id_prefix, std::uint32_t config_hash, AggregationConfig config, std::string file_path)¶
Distributed mode: flush to a per-visitor SstWriterContext rooted at
staging_dir. FLUSH_THRESHOLD emits partial SSTs (mixed Put+Merge) so the in-memory map never exceeds the threshold. Aton_file_complete, the writer context is committed and its Artifacts are embedded in the ChunkAggregationOutput so the worker / coordinator can forward them to the mainSstArtifactRegistry.staging_diris typically the same node-local dir the rest of the SST pipeline uses.batch_id_prefixis joined with a per-file suffix to form a unique SstWriterContext root (so concurrent per-file visitors never collide).
-
virtual void begin(std::size_t num_checkpoints) override¶
-
virtual void on_checkpoint(std::size_t checkpoint_idx) override¶
-
virtual void on_event(const EventRecord &record) override¶
-
inline virtual bool needs_args_map() const override¶
-
ChunkAggregationOutput take_output()¶
-
void flush_to_batch(rocksdb::RocksDatabase::Batch &batch)¶
-
inline const std::unordered_set<std::string> &observed_extra_keys() const¶
-
inline const std::unordered_set<std::string> &observed_custom_metrics() const¶
-
inline std::vector<indexer::IndexDatabaseSstWriterContext::Artifacts> &aggregation_artifacts() noexcept¶
Distributed mode only: one or more per-flush SST artifact sets produced by this visitor after
on_file_complete. Each flush emits its own SST(s) becauseSstFileWriterrequires strictly ascending keys and merge operands for the same key across flushes would violate that invariant. Empty in legacy mode.
-
struct AggregatorInput¶
Public Functions
-
AggregatorInput &with_directory(const std::string &dir)¶
-
AggregatorInput &with_config(const AggregationConfig &cfg)¶
-
AggregatorInput &with_checkpoint_size(std::size_t sz)¶
-
AggregatorInput &with_index_dir(const std::string &dir)¶
-
AggregatorInput &with_force_rebuild(bool force)¶
-
AggregatorInput &with_parallelism(std::size_t n)¶
-
AggregatorInput &with_event_batch_size(std::size_t sz)¶
-
AggregatorInput &with_directory(const std::string &dir)¶
-
class AggregatorSummaryUtility : public dftracer::utils::utilities::Utility<AggregatorSummaryInput, AggregatorSummaryOutput>¶
-
class AggregatorUtility : public dftracer::utils::utilities::StreamingUtility<AggregatorInput, AggregationBatch, tags::NeedsContext>¶
Public Functions
-
coro::AsyncGenerator<AggregationBatch> process(const AggregatorInput &input) override¶
-
coro::AsyncGenerator<AggregationBatch> process(const AggregatorInput &input) override¶
-
struct AssociationResolverInput¶
Public Members
-
EventAggregatorOutput aggregations¶
-
std::vector<std::shared_ptr<AssociationTracker>> trackers¶
-
AggregationConfig config¶
-
EventAggregatorOutput aggregations¶
-
struct AssociationResolverOutput¶
-
class AssociationResolverUtility : public dftracer::utils::utilities::Utility<AssociationResolverInput, AssociationResolverOutput>¶
Public Functions
-
coro::CoroTask<AssociationResolverOutput> process(const AssociationResolverInput &input) override¶
-
coro::CoroTask<AssociationResolverOutput> process(const AssociationResolverInput &input) override¶
-
class AssociationTracker¶
Public Functions
-
AssociationTracker() = default¶
-
void extract_from_event(std::string_view name, std::uint64_t pid, std::uint64_t ts, std::uint64_t dur, const ArgsMap &args, const AggregationConfig &config)¶
-
void finalize()¶
-
std::uint64_t get_parent_pid(std::uint64_t pid) const¶
-
std::unordered_map<std::string, std::string> get_boundary_associations(std::uint64_t pid, std::uint64_t ts) const¶
-
inline const std::vector<BoundaryInterval> &get_all_intervals() const¶
-
inline bool has_boundary_events() const¶
-
inline bool has_process_tree() const¶
-
std::unordered_set<std::uint64_t> get_root_pids() const¶
-
void merge(const AssociationTracker &other)¶
-
std::string serialize() const¶
Public Static Functions
-
static AssociationTracker deserialize(std::string_view data)¶
-
AssociationTracker() = default¶
-
struct AugmentationConfig¶
-
struct BoundaryEventConfig¶
-
struct BoundaryInterval¶
-
struct BoundaryTimeRange¶
-
struct ChunkAggregationOutput¶
Public Members
-
int chunk_index = 0¶
-
AggregationMap aggregations¶
-
AggregationMap profile_aggregations¶
-
AggregationMap system_aggregations¶
-
std::size_t events_processed = 0¶
-
std::size_t bytes_processed = 0¶
-
std::string file_path¶
-
bool success = false¶
-
std::shared_ptr<AssociationTracker> local_tracker¶
-
std::uint64_t min_time_bucket = std::numeric_limits<std::uint64_t>::max()¶
-
std::uint64_t max_time_bucket = 0¶
-
int chunk_index = 0¶
-
struct ChunkAggregatorInput¶
Public Functions
-
inline ChunkAggregatorInput &with_file_path(const std::string &path)¶
-
inline ChunkAggregatorInput &with_index_path(const std::string &path)¶
-
inline ChunkAggregatorInput &with_byte_range(std::size_t start, std::size_t end)¶
-
inline ChunkAggregatorInput &with_line_range(std::size_t start, std::size_t end)¶
-
inline ChunkAggregatorInput &with_chunk_index(int index)¶
-
inline ChunkAggregatorInput &with_config(const AggregationConfig &cfg)¶
-
inline ChunkAggregatorInput &with_checkpoint_size(std::size_t size)¶
-
inline ChunkAggregatorInput &with_batch_size(std::size_t size)¶
-
inline ChunkAggregatorInput &with_file_path(const std::string &path)¶
-
class ChunkAggregatorUtility : public dftracer::utils::utilities::Utility<ChunkAggregatorInput, ChunkAggregationOutput, utilities::tags::Parallelizable>¶
Public Functions
-
ChunkAggregatorUtility() = default¶
-
coro::CoroTask<ChunkAggregationOutput> process(const ChunkAggregatorInput &input) override¶
-
ChunkAggregatorUtility() = default¶
-
struct ChunkMapperInput¶
Public Functions
-
inline ChunkMapperInput &with_config(const AggregationConfig &cfg)¶
-
inline ChunkMapperInput &with_checkpoint_size(std::size_t size)¶
-
inline ChunkMapperInput &with_target_chunk_size(std::size_t size_mb)¶
-
inline ChunkMapperInput &with_batch_size(std::size_t size_bytes)¶
Public Members
-
std::vector<utilities::composites::dft::MetadataCollectorUtilityOutput> metadata¶
-
AggregationConfig config¶
-
std::size_t checkpoint_size¶
-
std::size_t target_chunk_size_mb¶
-
std::size_t batch_size = 4 * 1024 * 1024¶
Public Static Functions
-
static inline ChunkMapperInput from_metadata(const std::vector<utilities::composites::dft::MetadataCollectorUtilityOutput> &meta)¶
-
inline ChunkMapperInput &with_config(const AggregationConfig &cfg)¶
-
class ChunkMapperUtility : public dftracer::utils::utilities::Utility<ChunkMapperInput, ChunkMapperOutput>¶
Public Functions
-
coro::CoroTask<ChunkMapperOutput> process(const ChunkMapperInput &input) override¶
-
coro::CoroTask<ChunkMapperOutput> process(const ChunkMapperInput &input) override¶
-
struct CountConfidenceInterval¶
-
struct DeserializedAggKey¶
-
struct DeserializedSystemKey¶
Public Members
-
SystemMetricKey key¶
-
SystemMetricKey key¶
-
struct DfanalyzerContext¶
Context for converting aggregation data to dfanalyzer-compatible Arrow format.
Public Members
-
const std::unordered_map<std::string, std::string> *file_hashes = nullptr¶
Hash tables for resolving fhash/hhash to file_name/host_name.
-
const std::unordered_map<std::string, std::string> *host_hashes = nullptr¶
-
std::uint64_t time_origin = 0¶
Time origin (minimum time_bucket) for normalization.
-
double time_resolution = 1e6¶
Time resolution (microseconds per output unit, default 1e6 = seconds).
-
double time_granularity = 1.0¶
Time granularity in seconds (bucket width for time_range computation).
-
const std::unordered_map<std::string, std::string> *file_hashes = nullptr¶
-
class EventAggregator¶
Public Types
-
using ScanCallback = std::function<bool(AggMapType, const AggregationKey&, AggregationMetrics&)>¶
-
using RawScanCallbackFn = bool (*)(void *ctx, std::string_view key_bytes, std::string_view value_bytes)¶
Type-erased raw scan. Use the templated overload below for zero- allocation calls.
Public Functions
-
EventAggregator()¶
-
void merge_chunk(ChunkAggregationOutput &&chunk_output)¶
-
EventAggregatorOutput finalize()¶
-
std::size_t scan(ScanCallback callback) const¶
-
std::size_t scan_shard_range(std::uint16_t shard_begin, std::uint16_t shard_end, ScanCallback callback) const¶
-
std::size_t scan_shard_range_raw_fn(std::uint16_t shard_begin, std::uint16_t shard_end, RawScanCallbackFn fn, void *ctx) const¶
-
std::size_t scan_system_metrics_raw_fn(RawScanCallbackFn fn, void *ctx) const¶
Sequential scan of the SYSTEM_METRICS CF (no shard prefix in keys).
-
template<typename F>
inline std::size_t scan_shard_range_raw(std::uint16_t shard_begin, std::uint16_t shard_end, F &&callback) const¶ Template wrapper: forwards any callable
(sv, sv) -> boolinto the raw scan with zero heap allocations. The adapter lambda is a captureless+[]so it decays to a plain function pointer.
-
std::vector<std::shared_ptr<AssociationTracker>> take_trackers()¶
Move trackers out without materializing the full aggregation map.
-
std::unique_ptr<AssociationTracker> build_global_tracker()¶
Merge fresh trackers with any persisted tracker from the DB, persist the result, and return the merged tracker.
-
ObservedColumns observed_columns()¶
-
void add_observed_extra_key(const std::string &key)¶
-
void add_observed_custom_metric(const std::string &name)¶
-
inline std::size_t total_events() const¶
-
inline std::size_t total_bytes() const¶
-
inline std::size_t total_files() const¶
-
void update_time_bounds(std::uint64_t time_bucket)¶
-
std::uint64_t min_time_bucket() const¶
-
std::uint64_t max_time_bucket() const¶
-
TimeBoundsResult query_time_bounds() const¶
-
void persist_time_bounds()¶
Persist the in-memory min/max time bucket to the AGGREGATION CF so a later read-only reopen can recover the trace origin. finalize() does this too; the SST build path needs it called explicitly after merge_chunk().
-
inline bool is_rocksdb_mode() const¶
-
inline std::shared_ptr<rocksdb::RocksDatabase> db() const¶
-
inline std::uint32_t config_hash() const¶
Public Static Functions
-
static std::shared_ptr<rocksdb::RocksDatabase> open_with_merge_operator(const std::string &index_path)¶
-
static std::shared_ptr<rocksdb::RocksDatabase> open_read_only_with_merge_operator(const std::string &index_path)¶
Read-only variant for multi-process concurrent scan (e.g. MPI ranks covering disjoint shard-prefix ranges of a shared unified index). Multi-process RocksDB writes are forbidden; read-only opens do not hold the exclusive LOCK, so N ranks can open the same DB at once.
-
struct ObservedColumns¶
-
struct TimeBoundsResult¶
-
using ScanCallback = std::function<bool(AggMapType, const AggregationKey&, AggregationMetrics&)>¶
-
struct EventAggregatorOutput¶
Public Members
-
AggregationMap aggregations¶
-
AggregationMap profile_aggregations¶
-
AggregationMap system_aggregations¶
-
std::size_t total_events_processed = 0¶
-
std::size_t total_files_processed = 0¶
-
std::size_t total_bytes_processed = 0¶
-
std::vector<std::shared_ptr<AssociationTracker>> trackers¶
-
bool success = true¶
-
AggregationMap aggregations¶
-
struct FileChunkMapperInput¶
Public Functions
-
inline FileChunkMapperInput &with_config(const AggregationConfig &cfg)¶
-
inline FileChunkMapperInput &with_checkpoint_size(std::size_t size)¶
-
inline FileChunkMapperInput &with_target_chunk_size(std::size_t size_mb)¶
-
inline FileChunkMapperInput &with_batch_size(std::size_t size_bytes)¶
-
inline FileChunkMapperInput &with_start_chunk_index(int index)¶
Public Members
-
utilities::composites::dft::MetadataCollectorUtilityOutput metadata¶
-
AggregationConfig config¶
-
std::size_t checkpoint_size = 0¶
-
std::size_t target_chunk_size_mb = 4¶
-
std::size_t batch_size = 4 * 1024 * 1024¶
-
int start_chunk_index = 0¶
Public Static Functions
-
static inline FileChunkMapperInput from_metadata(const utilities::composites::dft::MetadataCollectorUtilityOutput &meta)¶
-
inline FileChunkMapperInput &with_config(const AggregationConfig &cfg)¶
-
class FileChunkMapperUtility : public dftracer::utils::utilities::Utility<FileChunkMapperInput, FileChunkMapperOutput>¶
Public Functions
-
coro::CoroTask<FileChunkMapperOutput> process(const FileChunkMapperInput &input) override¶
-
coro::CoroTask<FileChunkMapperOutput> process(const FileChunkMapperInput &input) override¶
-
struct FloatMetricStats¶
Public Functions
-
inline explicit FloatMetricStats(double relative_accuracy = 0.01)¶
-
inline FloatMetricStats(const FloatMetricStats &other)¶
-
inline FloatMetricStats &operator=(const FloatMetricStats &other)¶
-
FloatMetricStats(FloatMetricStats&&) = default¶
-
FloatMetricStats &operator=(FloatMetricStats&&) = default¶
-
inline void update(double value, bool compute_percentiles = false)¶
-
inline void merge_from(const FloatMetricStats &other)¶
-
inline double get_stddev() const¶
-
inline explicit FloatMetricStats(double relative_accuracy = 0.01)¶
-
struct MetricStats¶
Public Functions
-
inline explicit MetricStats(double relative_accuracy = 0.01)¶
-
inline MetricStats(const MetricStats &other)¶
-
inline MetricStats &operator=(const MetricStats &other)¶
-
MetricStats(MetricStats&&) = default¶
-
MetricStats &operator=(MetricStats&&) = default¶
-
void update(std::uint64_t value, bool compute_percentiles = false)¶
-
void merge_from(const MetricStats &other)¶
-
double get_stddev() const¶
-
double get_skewness() const¶
-
double get_kurtosis() const¶
-
inline explicit MetricStats(double relative_accuracy = 0.01)¶
-
struct PerfettoTraceWriterInput¶
Public Members
-
std::string output_path¶
-
const EventAggregator *aggregator = nullptr¶
-
const AssociationTracker *tracker = nullptr¶
-
const AggregationConfig *agg_config = nullptr¶
-
std::unique_ptr<AssociationTracker> owned_tracker¶
-
std::unordered_set<std::uint64_t> root_pids¶
-
std::uint64_t trace_duration = 0¶
-
BoundaryTimeRangesMap boundary_ranges¶
-
bool compute_statistics = true¶
-
bool compute_percentiles = false¶
-
std::vector<double> percentiles¶
-
bool compress = false¶
-
int compression_level = 6¶
-
PerfettoEventFormat format = PerfettoEventFormat::COUNTER¶
-
std::atomic<std::size_t> *keys_written = nullptr¶
Workers add their per-shard key count here if non-null.
-
bool merge_on_sharded = false¶
Concatenate shards into
output_pathand unlink them on SHARDED layouts (typically NFS). Callers that read shards directly leave false.
-
std::uint16_t shard_begin = 0¶
Total shard-prefix range (half-open) this invocation is responsible for. Defaults cover the whole key space. MPI drivers set a disjoint range per rank so N ranks collectively cover
[0, AGG_KEY_NUM_SHARDS)without overlap. Local coroutine workers within a single process further subdivide this range.
-
std::uint16_t shard_end = 0¶
-
bool emit_header = true¶
Emit the JSON array prologue (
[\n+ trace_metadata + root_process markers) to this invocation’s output. MPI drivers set this on rank 0 only so concatenated rank outputs produce exactly one array open.
Emit the JSON array epilogue (
]). MPI drivers set this on the last rank only.
-
std::string output_path¶
-
class PerfettoTraceWriterUtility : public dftracer::utils::utilities::Utility<PerfettoTraceWriterInput, PerfettoTraceWriterOutput, utilities::tags::Parallelizable, utilities::tags::NeedsContext>¶
Public Functions
-
coro::CoroTask<bool> process(const PerfettoTraceWriterInput &input) override¶
-
coro::CoroTask<bool> process(const PerfettoTraceWriterInput &input) override¶
-
struct SystemAggregationMetrics¶
Public Functions
-
inline explicit SystemAggregationMetrics(double relative_accuracy = 0.01)¶
-
inline SystemAggregationMetrics(const SystemAggregationMetrics &other)¶
-
inline SystemAggregationMetrics &operator=(const SystemAggregationMetrics &other)¶
-
SystemAggregationMetrics(SystemAggregationMetrics&&) = default¶
-
SystemAggregationMetrics &operator=(SystemAggregationMetrics&&) = default¶
-
inline void update_metric(std::string_view name, double value, bool compute_percentiles = false)¶
-
inline void update_timestamp(std::uint64_t event_ts)¶
-
inline void merge_from(const SystemAggregationMetrics &other)¶
-
inline explicit SystemAggregationMetrics(double relative_accuracy = 0.01)¶
-
struct SystemMetricKey¶
-
class SystemMetricsMergeOperator : public rocksdb::MergeOperator¶
Public Functions
-
bool FullMergeV2(const MergeOperationInput &merge_in, MergeOperationOutput *merge_out) const override¶
-
bool PartialMerge(const ::rocksdb::Slice &key, const ::rocksdb::Slice &left_operand, const ::rocksdb::Slice &right_operand, std::string *new_value, ::rocksdb::Logger *logger) const override¶
-
inline const char *Name() const override¶
-
bool FullMergeV2(const MergeOperationInput &merge_in, MergeOperationOutput *merge_out) const override¶