0

[tracing] Improve chrome data sources

This CL adds
- `kRequiresCallbacksUnderLock=false` to several chrome data sources: while true is the default for backward compatibility, these don't need it.
- Explicit Flush in BackgroundMetadataDataSource, to prevent data
loss; I'm investigating reasons why we often miss this event, this should help rule out data loss related to SMB scraping issue.

Change-Id: I37c386a85341797d69a18bf2452a59581f60cdcb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6305392
Reviewed-by: Mikhail Khokhlov <khokhlov@google.com>
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1427109}
This commit is contained in:
Etienne Pierre-doray
2025-03-03 07:16:19 -08:00
committed by Chromium LUCI CQ
parent f55cbfb015
commit f5a089b7b1
4 changed files with 10 additions and 0 deletions

@ -186,6 +186,8 @@ class PreferenceManagerImpl
class BackgroundMetadataDataSource
: public perfetto::DataSource<BackgroundMetadataDataSource> {
public:
static constexpr bool kRequiresCallbacksUnderLock = false;
static void Register() {
perfetto::DataSourceDescriptor desc;
desc.set_name("org.chromium.background_scenario_metadata");
@ -200,6 +202,8 @@ class BackgroundMetadataDataSource
packet->set_timestamp_clock_id(base::tracing::kTraceClockId);
auto* chrome_metadata = packet->set_chrome_metadata();
scenario->GenerateMetadataProto(chrome_metadata);
packet->Finalize();
ctx.Flush();
});
}
};

@ -29,6 +29,8 @@ class COMPONENT_EXPORT(TRACING_CPP) HistogramSamplesDataSource
: public perfetto::DataSource<HistogramSamplesDataSource,
HistogramSamplesTraits> {
public:
static constexpr bool kRequiresCallbacksUnderLock = false;
static void Register();
HistogramSamplesDataSource();

@ -19,6 +19,8 @@ namespace tracing {
class COMPONENT_EXPORT(TRACING_CPP) MetadataDataSource
: public perfetto::DataSource<MetadataDataSource> {
public:
static constexpr bool kRequiresCallbacksUnderLock = false;
static void Register();
void OnStart(const StartArgs&) override;

@ -62,6 +62,8 @@ class COMPONENT_EXPORT(TRACING_CPP) TracingSamplerProfiler {
: public perfetto::DataSource<DataSource> {
public:
static constexpr bool kSupportsMultipleInstances = false;
static constexpr bool kRequiresCallbacksUnderLock = false;
using TraceContext = perfetto::DataSource<DataSource>::TraceContext;
DataSource() = default;