diff --git a/clang-tools-extra/clangd/support/Trace.h b/clang-tools-extra/clangd/support/Trace.h --- a/clang-tools-extra/clangd/support/Trace.h +++ b/clang-tools-extra/clangd/support/Trace.h @@ -68,6 +68,10 @@ const llvm::StringLiteral LabelName; }; +/// Convenient helper for collecting memory usage metrics from across multiple +/// components. Results are recorded under a metric named "memory_usage". +void recordMemoryUsage(double Value, llvm::StringRef ComponentName); + /// A consumer of trace events and measurements. The events are produced by /// Spans and trace::log, the measurements are produced by Metrics::record. /// Implementations of this interface must be thread-safe. diff --git a/clang-tools-extra/clangd/support/Trace.cpp b/clang-tools-extra/clangd/support/Trace.cpp --- a/clang-tools-extra/clangd/support/Trace.cpp +++ b/clang-tools-extra/clangd/support/Trace.cpp @@ -326,6 +326,13 @@ Context EventTracer::beginSpan(llvm::StringRef Name, llvm::json::Object *Args) { return Context::current().clone(); } + +void recordMemoryUsage(double Value, llvm::StringRef ComponentName) { + static constexpr Metric MemoryUsage("memory_usage", Metric::Value, + "component_name"); + + MemoryUsage.record(Value, ComponentName); +} } // namespace trace } // namespace clangd } // namespace clang