blob: 77f0df4cbcf24a28826c6d2717d558c326479115 [file] [log] [blame]
-- Copyright 2023 The Chromium Authors
-- Use of this source code is governed by a BSD-style license that can be
-- found in the LICENSE file.
-- A helper view on top of the histogram events emitted by Chrome.
-- Requires "disabled-by-default-histogram_samples" Chrome category or the
-- "org.chromium.histogram_sample" data source.
CREATE PERFETTO TABLE chrome_histograms (
-- The name of the histogram.
name STRING,
-- The value of the histogram sample.
value LONG,
-- Alias of |slice.ts|.
ts TIMESTAMP,
-- Thread name.
thread_name STRING,
-- Utid of the thread.
utid LONG,
-- Tid of the thread.
tid LONG,
-- Process name.
process_name STRING,
-- Upid of the process.
upid LONG,
-- Pid of the process.
pid LONG
) AS
WITH
-- Select raw histogram sample slices from the slice table.
hist AS (
SELECT
extract_arg(slice.arg_set_id, 'chrome_histogram_sample.name') AS name,
extract_arg(slice.arg_set_id, 'chrome_histogram_sample.sample') AS value,
ts,
track_id
FROM slice
WHERE
slice.name = "HistogramSample"
AND category = "disabled-by-default-histogram_samples"
)
-- Part 1: join histogram samples emitted via the track event category.
-- These samples are associated with a specific thread track.
SELECT
hist.name,
hist.value,
hist.ts,
thread.name AS thread_name,
thread.utid AS utid,
thread.tid AS tid,
process.name AS process_name,
process.upid,
process.pid
FROM hist
JOIN thread_track
ON thread_track.id = hist.track_id
JOIN thread
USING (utid)
JOIN process
USING (upid)
UNION ALL
-- Part 2: Join histogram samples emitted via the
-- "org.chromium.histogram_sample" data source. These samples are associated
-- with a process track.
SELECT
hist.name,
hist.value,
hist.ts,
NULL AS thread_name,
NULL AS utid,
NULL AS tid,
process.name AS process_name,
process.upid,
process.pid
FROM hist
JOIN process_track
ON process_track.id = hist.track_id
JOIN process
USING (upid);