@gracker/smartperfetto 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/config/domainManifest.d.ts +5 -3
- package/dist/agent/config/domainManifest.d.ts.map +1 -1
- package/dist/agent/config/domainManifest.js +120 -5
- package/dist/agent/config/domainManifest.js.map +1 -1
- package/dist/agent/core/conclusionContract.d.ts +1 -0
- package/dist/agent/core/conclusionContract.d.ts.map +1 -1
- package/dist/agent/core/orchestratorTypes.d.ts +5 -0
- package/dist/agent/core/orchestratorTypes.d.ts.map +1 -1
- package/dist/agent/core/orchestratorTypes.js.map +1 -1
- package/dist/agent/scene/buildSmartChatReport.d.ts +13 -0
- package/dist/agent/scene/buildSmartChatReport.d.ts.map +1 -0
- package/dist/agent/scene/buildSmartChatReport.js +333 -0
- package/dist/agent/scene/buildSmartChatReport.js.map +1 -0
- package/dist/agent/scene/sceneAnalysisJobRunner.d.ts +8 -4
- package/dist/agent/scene/sceneAnalysisJobRunner.d.ts.map +1 -1
- package/dist/agent/scene/sceneAnalysisJobRunner.js +78 -3
- package/dist/agent/scene/sceneAnalysisJobRunner.js.map +1 -1
- package/dist/agent/scene/sceneIntervalBuilder.d.ts +14 -5
- package/dist/agent/scene/sceneIntervalBuilder.d.ts.map +1 -1
- package/dist/agent/scene/sceneIntervalBuilder.js +578 -1
- package/dist/agent/scene/sceneIntervalBuilder.js.map +1 -1
- package/dist/agent/scene/sceneStage1Verifier.d.ts +8 -0
- package/dist/agent/scene/sceneStage1Verifier.d.ts.map +1 -0
- package/dist/agent/scene/sceneStage1Verifier.js +245 -0
- package/dist/agent/scene/sceneStage1Verifier.js.map +1 -0
- package/dist/agent/scene/sceneStoryService.d.ts +20 -2
- package/dist/agent/scene/sceneStoryService.d.ts.map +1 -1
- package/dist/agent/scene/sceneStoryService.js +238 -25
- package/dist/agent/scene/sceneStoryService.js.map +1 -1
- package/dist/agent/scene/smartCancelBridge.d.ts +13 -0
- package/dist/agent/scene/smartCancelBridge.d.ts.map +1 -0
- package/dist/agent/scene/smartCancelBridge.js +44 -0
- package/dist/agent/scene/smartCancelBridge.js.map +1 -0
- package/dist/agent/scene/smartDeepDiveDispatch.d.ts +15 -0
- package/dist/agent/scene/smartDeepDiveDispatch.d.ts.map +1 -0
- package/dist/agent/scene/smartDeepDiveDispatch.js +170 -0
- package/dist/agent/scene/smartDeepDiveDispatch.js.map +1 -0
- package/dist/agent/scene/types.d.ts +97 -6
- package/dist/agent/scene/types.d.ts.map +1 -1
- package/dist/agent/tools/frameAnalyzer.d.ts.map +1 -1
- package/dist/agent/tools/frameAnalyzer.js +1 -0
- package/dist/agent/tools/frameAnalyzer.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.d.ts +24 -0
- package/dist/agentOpenAI/openAiRuntime.d.ts.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.js +159 -191
- package/dist/agentOpenAI/openAiRuntime.js.map +1 -1
- package/dist/agentRuntime/index.d.ts +1 -0
- package/dist/agentRuntime/index.d.ts.map +1 -1
- package/dist/agentRuntime/index.js +16 -1
- package/dist/agentRuntime/index.js.map +1 -1
- package/dist/agentRuntime/runtimeCommon.d.ts +34 -0
- package/dist/agentRuntime/runtimeCommon.d.ts.map +1 -0
- package/dist/agentRuntime/runtimeCommon.js +231 -0
- package/dist/agentRuntime/runtimeCommon.js.map +1 -0
- package/dist/agentv3/claudeConfig.d.ts +6 -2
- package/dist/agentv3/claudeConfig.d.ts.map +1 -1
- package/dist/agentv3/claudeConfig.js +50 -48
- package/dist/agentv3/claudeConfig.js.map +1 -1
- package/dist/agentv3/claudeMcpServer.d.ts.map +1 -1
- package/dist/agentv3/claudeMcpServer.js +74 -66
- package/dist/agentv3/claudeMcpServer.js.map +1 -1
- package/dist/agentv3/claudeRuntime.d.ts +18 -2
- package/dist/agentv3/claudeRuntime.d.ts.map +1 -1
- package/dist/agentv3/claudeRuntime.js +198 -265
- package/dist/agentv3/claudeRuntime.js.map +1 -1
- package/dist/agentv3/claudeSseBridge.js +1 -1
- package/dist/agentv3/claudeSseBridge.js.map +1 -1
- package/dist/agentv3/claudeVerifier.d.ts.map +1 -1
- package/dist/agentv3/claudeVerifier.js +3 -6
- package/dist/agentv3/claudeVerifier.js.map +1 -1
- package/dist/agentv3/strategyLoader.d.ts +3 -0
- package/dist/agentv3/strategyLoader.d.ts.map +1 -1
- package/dist/agentv3/strategyLoader.js +17 -4
- package/dist/agentv3/strategyLoader.js.map +1 -1
- package/dist/cli-user/bin.js +83 -2
- package/dist/cli-user/bin.js.map +1 -1
- package/dist/cli-user/commands/analyze.d.ts +2 -0
- package/dist/cli-user/commands/analyze.d.ts.map +1 -1
- package/dist/cli-user/commands/analyze.js +1 -0
- package/dist/cli-user/commands/analyze.js.map +1 -1
- package/dist/cli-user/commands/capture.d.ts +37 -2
- package/dist/cli-user/commands/capture.d.ts.map +1 -1
- package/dist/cli-user/commands/capture.js +184 -95
- package/dist/cli-user/commands/capture.js.map +1 -1
- package/dist/cli-user/commands/compare.d.ts +2 -0
- package/dist/cli-user/commands/compare.d.ts.map +1 -1
- package/dist/cli-user/commands/compare.js +1 -0
- package/dist/cli-user/commands/compare.js.map +1 -1
- package/dist/cli-user/commands/doctor.js +4 -0
- package/dist/cli-user/commands/doctor.js.map +1 -1
- package/dist/cli-user/services/androidCapture.d.ts +59 -0
- package/dist/cli-user/services/androidCapture.d.ts.map +1 -0
- package/dist/cli-user/services/androidCapture.js +375 -0
- package/dist/cli-user/services/androidCapture.js.map +1 -0
- package/dist/cli-user/services/captureConfig.d.ts +38 -0
- package/dist/cli-user/services/captureConfig.d.ts.map +1 -0
- package/dist/cli-user/services/captureConfig.js +434 -0
- package/dist/cli-user/services/captureConfig.js.map +1 -0
- package/dist/cli-user/services/captureTools.d.ts +11 -0
- package/dist/cli-user/services/captureTools.d.ts.map +1 -0
- package/dist/cli-user/services/captureTools.js +247 -0
- package/dist/cli-user/services/captureTools.js.map +1 -0
- package/dist/cli-user/services/cliAnalyzeService.d.ts +2 -0
- package/dist/cli-user/services/cliAnalyzeService.d.ts.map +1 -1
- package/dist/cli-user/services/cliAnalyzeService.js +1 -0
- package/dist/cli-user/services/cliAnalyzeService.js.map +1 -1
- package/dist/cli-user/services/runtimeGuard.d.ts +10 -0
- package/dist/cli-user/services/runtimeGuard.d.ts.map +1 -1
- package/dist/cli-user/services/runtimeGuard.js +48 -0
- package/dist/cli-user/services/runtimeGuard.js.map +1 -1
- package/dist/cli-user/services/turnRunner.d.ts +3 -0
- package/dist/cli-user/services/turnRunner.d.ts.map +1 -1
- package/dist/cli-user/services/turnRunner.js +4 -0
- package/dist/cli-user/services/turnRunner.js.map +1 -1
- package/dist/cli-user/types.d.ts +57 -0
- package/dist/cli-user/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +12 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -1
- package/dist/perfetto-recording-tools-pin.env +24 -0
- package/dist/routes/agent/finalizeAgentDrivenSession.d.ts +67 -0
- package/dist/routes/agent/finalizeAgentDrivenSession.d.ts.map +1 -0
- package/dist/routes/agent/finalizeAgentDrivenSession.js +103 -0
- package/dist/routes/agent/finalizeAgentDrivenSession.js.map +1 -0
- package/dist/routes/agent/normalizeAnalyzeOptions.d.ts +42 -0
- package/dist/routes/agent/normalizeAnalyzeOptions.d.ts.map +1 -0
- package/dist/routes/agent/normalizeAnalyzeOptions.js +185 -0
- package/dist/routes/agent/normalizeAnalyzeOptions.js.map +1 -0
- package/dist/routes/agentRoutes.d.ts.map +1 -1
- package/dist/routes/agentRoutes.js +285 -125
- package/dist/routes/agentRoutes.js.map +1 -1
- package/dist/scripts/verifyAgentSseScrolling.js +131 -8
- package/dist/scripts/verifyAgentSseScrolling.js.map +1 -1
- package/dist/services/agentResultNormalizer.d.ts.map +1 -1
- package/dist/services/agentResultNormalizer.js +32 -4
- package/dist/services/agentResultNormalizer.js.map +1 -1
- package/dist/services/evidence/evidenceContractBuilder.d.ts.map +1 -1
- package/dist/services/evidence/evidenceContractBuilder.js +17 -3
- package/dist/services/evidence/evidenceContractBuilder.js.map +1 -1
- package/dist/services/perfettoSqlSkill.d.ts.map +1 -1
- package/dist/services/perfettoSqlSkill.js +1 -0
- package/dist/services/perfettoSqlSkill.js.map +1 -1
- package/dist/services/providerManager/connectionTester.d.ts.map +1 -1
- package/dist/services/providerManager/connectionTester.js +4 -68
- package/dist/services/providerManager/connectionTester.js.map +1 -1
- package/dist/services/providerManager/index.d.ts +1 -0
- package/dist/services/providerManager/index.d.ts.map +1 -1
- package/dist/services/providerManager/index.js +8 -1
- package/dist/services/providerManager/index.js.map +1 -1
- package/dist/services/providerManager/providerService.d.ts.map +1 -1
- package/dist/services/providerManager/providerService.js +37 -106
- package/dist/services/providerManager/providerService.js.map +1 -1
- package/dist/services/providerManager/providerSnapshot.d.ts.map +1 -1
- package/dist/services/providerManager/providerSnapshot.js +13 -12
- package/dist/services/providerManager/providerSnapshot.js.map +1 -1
- package/dist/services/providerManager/runtimeCapabilities.d.ts +9 -0
- package/dist/services/providerManager/runtimeCapabilities.d.ts.map +1 -0
- package/dist/services/providerManager/runtimeCapabilities.js +105 -0
- package/dist/services/providerManager/runtimeCapabilities.js.map +1 -0
- package/dist/services/sceneReport/sceneJobArtifactStore.d.ts +22 -0
- package/dist/services/sceneReport/sceneJobArtifactStore.d.ts.map +1 -0
- package/dist/services/sceneReport/sceneJobArtifactStore.js +65 -0
- package/dist/services/sceneReport/sceneJobArtifactStore.js.map +1 -0
- package/dist/services/sceneReport/sceneReportMemoryCache.d.ts +5 -3
- package/dist/services/sceneReport/sceneReportMemoryCache.d.ts.map +1 -1
- package/dist/services/sceneReport/sceneReportMemoryCache.js +15 -10
- package/dist/services/sceneReport/sceneReportMemoryCache.js.map +1 -1
- package/dist/services/sceneReport/sceneReportStore.d.ts +9 -4
- package/dist/services/sceneReport/sceneReportStore.d.ts.map +1 -1
- package/dist/services/sceneReport/sceneReportStore.js +27 -7
- package/dist/services/sceneReport/sceneReportStore.js.map +1 -1
- package/dist/services/skillEngine/skillExecutor.d.ts +1 -0
- package/dist/services/skillEngine/skillExecutor.d.ts.map +1 -1
- package/dist/services/skillEngine/skillExecutor.js +64 -12
- package/dist/services/skillEngine/skillExecutor.js.map +1 -1
- package/dist/services/traceProcessor/sqlSemaphore.d.ts +16 -0
- package/dist/services/traceProcessor/sqlSemaphore.d.ts.map +1 -0
- package/dist/services/traceProcessor/sqlSemaphore.js +63 -0
- package/dist/services/traceProcessor/sqlSemaphore.js.map +1 -0
- package/dist/types/dataContract.d.ts +1 -1
- package/dist/types/dataContract.d.ts.map +1 -1
- package/dist/types/dataContract.js +2 -0
- package/dist/types/dataContract.js.map +1 -1
- package/package.json +3 -3
- package/prebuilts/android-platform-tools/README.md +13 -0
- package/prebuilts/perfetto-recording-tools/README.md +17 -0
- package/skills/README.md +13 -5
- package/skills/atomic/cpu_topology_detection.skill.yaml +105 -159
- package/skills/atomic/cpu_topology_view.skill.yaml +2 -0
- package/skills/composite/device_state_snapshot.skill.yaml +204 -0
- package/skills/composite/scene_reconstruction.skill.yaml +5 -1
- package/strategies/prompt-openai-final-report-continuation-en.template.md +3 -1
- package/strategies/prompt-openai-final-report-continuation-zh.template.md +3 -1
- package/strategies/prompt-output-format.template.md +1 -1
- package/strategies/scene-reconstruction-verifier.template.md +18 -0
- package/strategies/scrolling.strategy.md +5 -1
- package/strategies/smart.strategy.md +53 -0
- package/strategies/startup.strategy.md +4 -4
- package/skills/atomic/device_state_snapshot.skill.yaml +0 -171
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
Copyright (C) 2024-2026 Gracker (Chris)
|
|
4
|
+
This file is part of SmartPerfetto. See LICENSE for details.
|
|
5
|
+
-->
|
|
6
|
+
---
|
|
7
|
+
scene: smart
|
|
8
|
+
strategy_kind: contract_only
|
|
9
|
+
priority: 5
|
|
10
|
+
effort: high
|
|
11
|
+
keywords:
|
|
12
|
+
- smart
|
|
13
|
+
- 智能
|
|
14
|
+
- mixed trace
|
|
15
|
+
- 场景混合
|
|
16
|
+
required_capabilities: []
|
|
17
|
+
optional_capabilities: []
|
|
18
|
+
final_report_contract:
|
|
19
|
+
required_sections:
|
|
20
|
+
- id: scene_timeline
|
|
21
|
+
label: 场景时间线
|
|
22
|
+
description: 按时间顺序列出 trace 中检测到的关键用户操作和设备状态场景。
|
|
23
|
+
pattern_groups:
|
|
24
|
+
- ["场景时间线", "timeline", "时间线"]
|
|
25
|
+
- ["冷启动", "热启动", "滑动", "点击", "返回", "Home", "亮屏", "熄屏", "ANR"]
|
|
26
|
+
- id: per_scene_summary
|
|
27
|
+
label: 分场景摘要
|
|
28
|
+
description: 对每个被深度分析的场景给出关键指标、结论和证据引用。
|
|
29
|
+
pattern_groups:
|
|
30
|
+
- ["分场景", "逐场景", "per-scene"]
|
|
31
|
+
- ["证据", "指标", "耗时", "延迟", "帧"]
|
|
32
|
+
- id: cross_scene_narrative
|
|
33
|
+
label: 跨场景叙事
|
|
34
|
+
description: 总结多个场景之间的关联、共同瓶颈或前后影响。
|
|
35
|
+
pattern_groups:
|
|
36
|
+
- ["跨场景", "整体", "关联", "链路"]
|
|
37
|
+
- ["原因", "影响", "共同", "瓶颈"]
|
|
38
|
+
- id: bottleneck_ranking
|
|
39
|
+
label: 瓶颈排序
|
|
40
|
+
description: 按影响范围、严重度和可行动性给出优化优先级。
|
|
41
|
+
pattern_groups:
|
|
42
|
+
- ["瓶颈排序", "优先级", "ranking"]
|
|
43
|
+
- ["P0", "P1", "优先", "建议"]
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
# Smart Analysis Contract
|
|
47
|
+
|
|
48
|
+
This strategy is intentionally contract-only. It must not be injected as a
|
|
49
|
+
normal scene strategy and must not participate in scene classification.
|
|
50
|
+
|
|
51
|
+
Smart Analysis Mode combines Scene Story detection with profile-specific
|
|
52
|
+
deep-dive routes, then projects the resulting scene report into a readable chat
|
|
53
|
+
summary and the standard HTML report chain.
|
|
@@ -50,7 +50,7 @@ final_report_contract:
|
|
|
50
50
|
label: 阶段耗时分解
|
|
51
51
|
description: '包含 startup_detail / phase breakdown 口径,并优先使用 self_ms 解释阶段贡献。'
|
|
52
52
|
pattern_groups:
|
|
53
|
-
- ['阶段耗时', '阶段分解', 'phase\s+breakdown', 'startup_detail']
|
|
53
|
+
- ['阶段耗时', '阶段分解', 'phase\s+breakdown', 'startup_detail', '根因分析树', 'Phase\s*\d+']
|
|
54
54
|
- ['self_ms', 'dur_ms', '耗时', '\d+(?:\.\d+)?\s*ms']
|
|
55
55
|
- id: root_cause_references
|
|
56
56
|
label: 根因编号引用
|
|
@@ -61,8 +61,8 @@ final_report_contract:
|
|
|
61
61
|
label: App/系统分层建议
|
|
62
62
|
description: '优化建议必须区分 App 层和系统/平台/ROM 层。'
|
|
63
63
|
pattern_groups:
|
|
64
|
-
- ['App
|
|
65
|
-
- ['
|
|
64
|
+
- ['App\s*层', '应用\s*层', 'App\s+layer']
|
|
65
|
+
- ['系统\s*/\s*平台\s*层', '系统\s*层', '平台\s*层', 'ROM\s*层', 'System/Platform', 'platform\s+layer']
|
|
66
66
|
|
|
67
67
|
phase_hints:
|
|
68
68
|
- id: detail_breakdown
|
|
@@ -644,7 +644,7 @@ TTID 和 TTFD 是两个不同的指标,必须区分:
|
|
|
644
644
|
- **数据不足时**:标注"数据不足,无法归类"而非强行贴标签
|
|
645
645
|
- **纯排除项**:编号可选(如"Binder 阻塞(B6) < 10ms ✓")
|
|
646
646
|
|
|
647
|
-
3. **根因分析树**:层级式展示启动耗时分解,**必须体现嵌套关系、使用 self_ms
|
|
647
|
+
3. **根因分析树**:层级式展示启动耗时分解,**必须体现嵌套关系、使用 self_ms、标注根因编号**。树可以保持紧凑;不要让长树状图挤掉后面的 App/系统分层建议。
|
|
648
648
|
```
|
|
649
649
|
启动总耗时 XXms
|
|
650
650
|
├── [Phase 1] bindApplication = XXms wall
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
# Copyright (C) 2024-2026 Gracker (Chris)
|
|
3
|
-
# This file is part of SmartPerfetto. See LICENSE for details.
|
|
4
|
-
|
|
5
|
-
# =============================================================================
|
|
6
|
-
# 设备环境状态快照(原子 Skill)
|
|
7
|
-
# =============================================================================
|
|
8
|
-
# 采集 trace 期间的设备环境信息:屏幕状态、电量、温度、CPU 频率、内存压力等。
|
|
9
|
-
|
|
10
|
-
name: device_state_snapshot
|
|
11
|
-
version: "1.0"
|
|
12
|
-
type: atomic
|
|
13
|
-
category: system_context
|
|
14
|
-
tier: B
|
|
15
|
-
|
|
16
|
-
meta:
|
|
17
|
-
display_name: "设备环境状态快照"
|
|
18
|
-
description: "采集 trace 期间的设备环境信息(屏幕、电量、温度、CPU、内存等)"
|
|
19
|
-
icon: "devices"
|
|
20
|
-
tags: [device, state, environment, context, atomic]
|
|
21
|
-
|
|
22
|
-
prerequisites:
|
|
23
|
-
required_tables:
|
|
24
|
-
- counter
|
|
25
|
-
- counter_track
|
|
26
|
-
|
|
27
|
-
inputs:
|
|
28
|
-
- name: start_ts
|
|
29
|
-
type: timestamp
|
|
30
|
-
required: false
|
|
31
|
-
description: "分析起始时间戳(ns)"
|
|
32
|
-
- name: end_ts
|
|
33
|
-
type: timestamp
|
|
34
|
-
required: false
|
|
35
|
-
description: "分析结束时间戳(ns)"
|
|
36
|
-
|
|
37
|
-
display:
|
|
38
|
-
level: summary
|
|
39
|
-
layer: overview
|
|
40
|
-
title: "设备环境状态"
|
|
41
|
-
columns:
|
|
42
|
-
- name: metric
|
|
43
|
-
label: "指标"
|
|
44
|
-
type: string
|
|
45
|
-
- name: value
|
|
46
|
-
label: "值"
|
|
47
|
-
type: string
|
|
48
|
-
- name: ts
|
|
49
|
-
label: "时间戳"
|
|
50
|
-
type: timestamp
|
|
51
|
-
unit: ns
|
|
52
|
-
clickAction: navigate_timeline
|
|
53
|
-
|
|
54
|
-
sql: |
|
|
55
|
-
WITH trace_bounds AS (
|
|
56
|
-
SELECT
|
|
57
|
-
COALESCE(${start_ts}, (SELECT MIN(ts) FROM slice)) as t_start,
|
|
58
|
-
COALESCE(${end_ts}, (SELECT MAX(ts + dur) FROM slice)) as t_end
|
|
59
|
-
),
|
|
60
|
-
screen_state AS (
|
|
61
|
-
SELECT
|
|
62
|
-
'screen_state' as metric,
|
|
63
|
-
CASE WHEN c.value > 0 THEN 'ON' ELSE 'OFF' END as value,
|
|
64
|
-
c.ts as ts
|
|
65
|
-
FROM counter c
|
|
66
|
-
JOIN counter_track ct ON c.track_id = ct.id
|
|
67
|
-
WHERE ct.name GLOB '*ScreenState*' OR ct.name GLOB '*screen_state*'
|
|
68
|
-
ORDER BY c.ts DESC
|
|
69
|
-
LIMIT 1
|
|
70
|
-
),
|
|
71
|
-
battery_info AS (
|
|
72
|
-
SELECT
|
|
73
|
-
'battery_level' as metric,
|
|
74
|
-
CAST(c.value AS TEXT) as value,
|
|
75
|
-
c.ts as ts
|
|
76
|
-
FROM counter c
|
|
77
|
-
JOIN counter_track ct ON c.track_id = ct.id
|
|
78
|
-
WHERE ct.name GLOB '*battery_level*' OR ct.name GLOB '*BatteryLevel*'
|
|
79
|
-
ORDER BY c.ts DESC
|
|
80
|
-
LIMIT 1
|
|
81
|
-
),
|
|
82
|
-
charging_info AS (
|
|
83
|
-
SELECT
|
|
84
|
-
'charging_state' as metric,
|
|
85
|
-
CASE WHEN c.value > 0 THEN 'CHARGING' ELSE 'NOT_CHARGING' END as value,
|
|
86
|
-
c.ts as ts
|
|
87
|
-
FROM counter c
|
|
88
|
-
JOIN counter_track ct ON c.track_id = ct.id
|
|
89
|
-
WHERE ct.name GLOB '*battery_status*' OR ct.name GLOB '*charging*' OR ct.name GLOB '*BatteryStatus*'
|
|
90
|
-
ORDER BY c.ts DESC
|
|
91
|
-
LIMIT 1
|
|
92
|
-
),
|
|
93
|
-
thermal_info AS (
|
|
94
|
-
SELECT
|
|
95
|
-
'thermal_zone' as metric,
|
|
96
|
-
ct.name || ': ' || CAST(ROUND(MAX(c.value) / 1000.0, 1) AS TEXT) || '°C' as value,
|
|
97
|
-
MAX(c.ts) as ts
|
|
98
|
-
FROM counter c
|
|
99
|
-
JOIN counter_track ct ON c.track_id = ct.id
|
|
100
|
-
CROSS JOIN trace_bounds tb
|
|
101
|
-
WHERE (ct.name GLOB '*thermal_zone*' OR ct.name GLOB '*Temperature*')
|
|
102
|
-
AND c.ts >= tb.t_start AND c.ts <= tb.t_end
|
|
103
|
-
GROUP BY ct.name
|
|
104
|
-
ORDER BY MAX(c.value) DESC
|
|
105
|
-
LIMIT 5
|
|
106
|
-
),
|
|
107
|
-
cpu_freq_summary AS (
|
|
108
|
-
SELECT
|
|
109
|
-
'cpu_max_freq' as metric,
|
|
110
|
-
'CPU' || ct.name || ': ' || CAST(ROUND(MAX(c.value) / 1e6, 2) AS TEXT) || 'GHz' as value,
|
|
111
|
-
MAX(c.ts) as ts
|
|
112
|
-
FROM counter c
|
|
113
|
-
JOIN cpu_counter_track ct ON c.track_id = ct.id
|
|
114
|
-
CROSS JOIN trace_bounds tb
|
|
115
|
-
WHERE ct.name = 'cpufreq'
|
|
116
|
-
AND c.ts >= tb.t_start AND c.ts <= tb.t_end
|
|
117
|
-
GROUP BY ct.cpu
|
|
118
|
-
ORDER BY ct.cpu
|
|
119
|
-
),
|
|
120
|
-
memory_info AS (
|
|
121
|
-
SELECT
|
|
122
|
-
'memory_pressure' as metric,
|
|
123
|
-
CAST(ROUND(MAX(c.value), 0) AS TEXT) as value,
|
|
124
|
-
MAX(c.ts) as ts
|
|
125
|
-
FROM counter c
|
|
126
|
-
JOIN counter_track ct ON c.track_id = ct.id
|
|
127
|
-
CROSS JOIN trace_bounds tb
|
|
128
|
-
WHERE (ct.name GLOB '*mem.*pressure*' OR ct.name GLOB '*MemFree*' OR ct.name GLOB '*MemAvailable*')
|
|
129
|
-
AND c.ts >= tb.t_start AND c.ts <= tb.t_end
|
|
130
|
-
),
|
|
131
|
-
process_count AS (
|
|
132
|
-
SELECT
|
|
133
|
-
'active_processes' as metric,
|
|
134
|
-
CAST(COUNT(DISTINCT p.upid) AS TEXT) as value,
|
|
135
|
-
NULL as ts
|
|
136
|
-
FROM process p
|
|
137
|
-
JOIN thread t ON t.upid = p.upid
|
|
138
|
-
JOIN thread_state ts_tbl ON ts_tbl.utid = t.utid
|
|
139
|
-
CROSS JOIN trace_bounds tb
|
|
140
|
-
WHERE ts_tbl.ts >= tb.t_start AND ts_tbl.ts <= tb.t_end
|
|
141
|
-
AND ts_tbl.state = 'Running'
|
|
142
|
-
),
|
|
143
|
-
oom_adj AS (
|
|
144
|
-
SELECT
|
|
145
|
-
'foreground_apps' as metric,
|
|
146
|
-
GROUP_CONCAT(p.name, ', ') as value,
|
|
147
|
-
NULL as ts
|
|
148
|
-
FROM (
|
|
149
|
-
SELECT DISTINCT p.name, p.upid
|
|
150
|
-
FROM counter c
|
|
151
|
-
JOIN process_counter_track pct ON c.track_id = pct.id
|
|
152
|
-
JOIN process p ON p.upid = pct.upid
|
|
153
|
-
CROSS JOIN trace_bounds tb
|
|
154
|
-
WHERE pct.name = 'oom_score_adj'
|
|
155
|
-
AND c.value <= 0
|
|
156
|
-
AND c.ts >= tb.t_start AND c.ts <= tb.t_end
|
|
157
|
-
AND p.name IS NOT NULL AND p.name != ''
|
|
158
|
-
LIMIT 10
|
|
159
|
-
) p
|
|
160
|
-
)
|
|
161
|
-
SELECT metric, value, printf('%d', ts) as ts FROM screen_state
|
|
162
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM battery_info
|
|
163
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM charging_info
|
|
164
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM thermal_info
|
|
165
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM cpu_freq_summary
|
|
166
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM memory_info
|
|
167
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM process_count
|
|
168
|
-
UNION ALL SELECT metric, value, printf('%d', ts) as ts FROM oom_adj
|
|
169
|
-
|
|
170
|
-
output:
|
|
171
|
-
format: structured
|