Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ SELECT
)
+ static_1d AS static_mw,
l3_lut.l3_hit,
l3_lut.l3_miss
l3_lut.l3_miss,
iif(base.suspended, 0, interconnect_lut.curve_value) AS interconnect_mw
FROM _w_dependent_cpus_unique AS base
-- LUT for 2D dependencies
LEFT JOIN _filtered_curves_2d AS lut0
Expand Down Expand Up @@ -130,7 +131,12 @@ LEFT JOIN _filtered_curves_2d AS lut7
LEFT JOIN _filtered_curves_l3 AS l3_lut
ON l3_lut.freq_khz = base.freq_0
AND l3_lut.dep_policy = base.dep_policy_0
AND l3_lut.dep_freq = base.dep_freq_0;
AND l3_lut.dep_freq = base.dep_freq_0
LEFT JOIN _filtered_curves_interconnect AS interconnect_lut
ON interconnect_lut.freq_khz = base.freq_0
AND interconnect_lut.dep_freq = base.dsu_freq
AND interconnect_lut.policy = 0
AND interconnect_lut.dep_policy = _dsu_dep!();

-- The most basic components of Wattson, all normalized to be in mW on a per
-- system state basis
Expand All @@ -150,7 +156,8 @@ SELECT
+ (coalesce(slices.l3_hit_count * base.l3_hit, 0)
+ coalesce(slices.l3_miss_count * base.l3_miss, 0))
* 1000
/ slices.dur AS dsu_scu_mw
/ slices.dur
+ coalesce(base.interconnect_mw, 0) AS dsu_scu_mw
FROM _w_independent_cpus_calc AS slices
JOIN _unique_estimates_mw AS base USING (config_hash)
WHERE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ SELECT
iif(suspend.suspended OR hotplug.offline, deepest.idle, idle.idle) AS idle,
-- If CPU is suspended or offline, set power estimate to 0
iif(suspend.suspended OR hotplug.offline, 0, lut.curve_value) AS curve_value,
lut.static
lut.static,
suspend.suspended
FROM _interval_intersect!(
(
_ii_subquery!(_valid_window),
Expand Down
14 changes: 10 additions & 4 deletions src/trace_processor/perfetto_sql/stdlib/wattson/cpu/pivot.sql
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ AS (
t1.curve_value AS $curve_col,
iif($cpu IN _device_policies, coalesce(t1.static, 0), 0) AS $static_col,
coalesce(t1.freq, 0) AS $freq_col,
coalesce(t1.idle, deepest.idle) AS $idle_col
coalesce(t1.idle, deepest.idle) AS $idle_col,
t1.suspended
FROM _idle_freq_materialized AS t1
CROSS JOIN _deepest_idle AS deepest
WHERE
Expand All @@ -53,7 +54,8 @@ AS (
0,
0,
0,
idle
idle,
FALSE AS suspended
FROM _deepest_idle()
WHERE
NOT EXISTS(
Expand Down Expand Up @@ -127,6 +129,7 @@ SELECT
_stats_cpu5.cpu5_static,
_stats_cpu6.cpu6_static,
_stats_cpu7.cpu7_static,
_stats_cpu0.suspended,
_wattson_dsu_frequency.dsu_freq,
CAST(_bitmask8!(
idle_0 != deepest.idle,
Expand Down Expand Up @@ -200,7 +203,8 @@ SELECT
idle_6,
freq_7,
idle_7,
dsu_freq
dsu_freq,
suspended
) AS config_hash,
freq_0,
idle_0,
Expand All @@ -226,6 +230,7 @@ SELECT
cpu5_curve,
cpu6_curve,
cpu7_curve,
suspended,
dsu_freq,
CAST(_bitmask8!(
cpus_on_mask & m0,
Expand Down Expand Up @@ -294,7 +299,8 @@ WITH
cpu7_curve,
dsu_freq,
static_1d,
policy_cpus_on_mask
policy_cpus_on_mask,
suspended
FROM _w_independent_cpus_calc
GROUP BY
config_hash
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ SELECT
dc.active,
dc.idle0,
dc.idle1,
dc.static
dc.static,
dc.interconnect
FROM _device_curves_2d AS dc
JOIN _wattson_device AS device
ON dc.device = device.name;
Expand Down Expand Up @@ -120,6 +121,25 @@ CREATE PERFETTO INDEX tpu_curves ON _tpu_filtered_curves(
requests
);

-- Device specific interconnect curves
CREATE PERFETTO TABLE _filtered_curves_interconnect AS
SELECT
dc.policy,
dc.freq_khz,
dc.dep_policy,
dc.dep_freq,
dc.interconnect AS curve_value
FROM _filtered_curves_2d_raw AS dc
WHERE
dc.interconnect > 0;

CREATE PERFETTO INDEX freq_interconnect ON _filtered_curves_interconnect(
policy,
freq_khz,
dep_policy,
dep_freq
);

-- Constructs table specifying CPUs that are DSU dependent
CREATE PERFETTO TABLE _cpu_w_dsu_dependency AS
SELECT DISTINCT cpu
Expand Down
Loading
Loading