丢帧全链路分析报告 (v-drop Pipeline)
测试场景信息
| 项目 | 值 |
|---|---|
| Excel Row | 312 |
| Module | 锁屏解锁 |
| Title | 数字密码解锁进桌面流畅度验证 |
| Loop | 2 |
| Index | 4 |
| Result | FAILED |
| Monitor Window | NotificationShade |
| Frames | 391 |
| Dropped Frames | 17 |
根因总览
已知模式命中:
DOZE_REFRESH_RATE_RACE(匹配分数 0.5)根因: Power 子系统的 DOZE 服务在屏幕亮起后触发刷新率 policy 切换到最低值,导致 SF VSYNC 被关闭,App 产出的 buffer 在队列等待 SF 重新激活
建议: 在 SCREEN_TURNING_ON 后,延迟 DOZE 的刷新率策略生效;或在 NotificationShade 动画期间锁定高刷新率
置信度: HIGH
刷新率问题
- 刷新率从 120Hz 下降到 60Hz (ts=16853767.9ms)
- 刷新率从 120Hz 下降到 60Hz (ts=16858240.2ms)
- 刷新率切换到 120.0Hz 时,Layer 帧率投票为 NoVote — 无 App 帧率诉求,RefreshRateSelector 回退到 policy 最低值
- 刷新率切换到 120.0Hz 时,Layer 帧率投票为 NoVote — 无 App 帧率诉求,RefreshRateSelector 回退到 policy 最低值
- 刷新率切换到 120.0Hz 时,Layer 帧率投票为 NoVote — 无 App 帧率诉求,RefreshRateSelector 回退到 policy 最低值
详细 AI 根因分析 → ai_root_cause_report.md | Buffer Stall 详情 → buffer_stall_deep_report.md | 刷新率详情 → refresh_rate_report.md
全局汇总
| 指标 | 值 |
|---|---|
| 分析窗口数 | 1 |
| 总丢帧数 (v-drop > 0) | 9 |
| v-drop 分布 | 1 + 1 + 2 + 1 + 2 + 2 + 1 + 2 + 5 |
| 已分析帧数 | 9 |
| 主要瓶颈 | UNKNOWN |
瓶颈分布 (全局)
| 瓶颈类型 | 丢帧数 | 说明 |
|---|---|---|
| App 未产出帧 | 8 | App 在区间内未产出新帧 |
| UI_BUILD_SLOW:animation | 5 | UI doFrame 超时 (animation) |
| UNKNOWN | 4 | 所有已知条件均不满足 |
App 未产出帧 [ 8] ███████████████████████ 47.1%
UI_BUILD_SLOW:animation [ 5] ██████████████ 29.4%
UNKNOWN [ 4] ███████████ 23.5%
窗口: NotificationShade
| 指标 | 值 |
|---|---|
| 总丢帧数 | 9 |
| 已分析帧数 | 9 |
| 覆盖率 | 100.0% |
瓶颈分布
| 瓶颈类型 | 丢帧数 | 说明 |
|---|---|---|
| App 未产出帧 | 8 | App 在区间内未产出新帧 |
| UI_BUILD_SLOW:animation | 5 | UI doFrame 超时 (animation) |
| UNKNOWN | 4 | 所有已知条件均不满足 |
App 未产出帧 [ 8] ███████████████████████ 47.1%
UI_BUILD_SLOW:animation [ 5] ██████████████ 29.4%
UNKNOWN [ 4] ███████████ 23.5%
丢帧详情
| # | match_tag | v-drop | 瓶颈 | 总耗时 | RT 渲染耗时 | ① App Render | ② Buffer Wait | ③ SF Composite | 根因 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | DrawFrames-5666230#NotificationShade | 1 | 未知 | 27.07ms | 2.34ms | 2.21ms | 19.28ms | 5.58ms | - |
| 2 | DrawFrames-5666395#NotificationShade | 1 | 未知 | 33.74ms | 2.73ms | 2.84ms | 29.42ms | 1.49ms | - |
| 3 | DrawFrames-5667200#NotificationShade | 2 | App 未产出帧 + SF 调度问题 | 38.04ms | 4.71ms | 4.59ms | 27.56ms | 5.89ms | App 未产出帧 |
| 4 | DrawFrames-5667376#NotificationShade | 1 | 未知 | 30.35ms | 4.59ms | 4.38ms | 16.54ms | 9.43ms | - |
| 5 | DrawFrames-5667598#NotificationShade | 2 | App 未产出帧 + SF 调度问题 | 38.29ms | 4.18ms | 4.06ms | 28.87ms | 5.36ms | App 未产出帧 |
| 6 | DrawFrames-5667971#NotificationShade | 2 | App 未产出帧 | 25.18ms | 6.13ms | 9.38ms | 11.98ms | 3.82ms | App 未产出帧 |
| 7 | DrawFrames-5668008#NotificationShade | 1 | 未知 | 35.71ms | 2.55ms | 3.13ms | 29.17ms | 3.40ms | - |
| 8 | DrawFrames-5668399#NotificationShade | 2 | App 未产出帧 + SF 调度问题 | 36.67ms | 2.64ms | 2.71ms | 29.31ms | 4.65ms | App 未产出帧 |
| 9 | DrawFrames-5668472#NotificationShade | 5 | UI 慢(animation) | 51.43ms | 4.32ms | 39.74ms | 8.86ms | 2.83ms | App 未产出帧; UI: R16%/S84%→调度饥饿 |
加粗 = 超阈值 (RT 渲染/① App/② Buffer > 16.67ms, ③ SF > 5ms)。根因来自 Tier 3.5 CPU 状态 + Tier 4 深度分析。
超时 Slice 深层根因分析
DrawFrames-5668472#NotificationShade (v-drop=5):
深层根因分析:
- UI 线程 Choreographer#doFrame 36.4ms 超时,其中 animation 占 33.8ms
- CPU 状态: Running 16% (5.9ms) / Sleeping 84% (31.4ms)
- 根因: 线程池调度饥饿(线程就绪但无 CPU 可用)
- 瓶颈线程: SystemUIBg-3 (Runnable 33.6ms)
- 唤醒链 (ndroid.systemui Sleep 31.0ms):
SystemUIBg-3 **[R 33.6ms]** → SystemUIBg-7 [S 35.1ms] → SystemUIBg-1 [S 35.1ms] → SystemUIBg-4 [S 34.2ms] → SystemUIBg-2 [S 34.1ms] → ndroid.systemui
v-drop > 1 区间分析
match_tag: DrawFrames-5667200#NotificationShade
-
v-drop: 2
-
区间: 22.46ms
-
期望帧数: 3
-
prev SF:
5667213 -
curr SF:
5667221- App 产出帧数: 1
- App 未产出周期: 1
- SF 跳过帧数: 0
- 主因: App 部分未出帧 + SF 调度延迟
帧流程时序图 (Perfetto UI 风格)
┌─ Curr SF: 5667221 ────────────────────────────────────────────┐ │ Total: 38.0ms │ │ ① 4.6ms ██████ │ ② 27.6ms ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ⚠️ STALL │ ③ 5.9ms ▒▒▒▒▒▒▒ ⚠️ │ UI(1.5ms): trav=1.0ms │ RT(4.7ms): swap=1.7ms └────────────────────────────────────────────────────────────┘图例: ⓪ 帧间间隙 | ① App渲染(UI+RT) | ② Buffer等待 | ③ SF合成 | ⚠️ 超时
帧流程详细分析 (VSYNC Pipeline)
[VSYNC-app] |__| (Signal) | v [App Main] [ Choreographer#doFrame: 1.5ms ] | v [App Render] [ DrawFrames: 4.7ms ] | v [BufferQueue] [ Buffer Wait: 27.6ms ⚠️ ] | [VSYNC-sf] |__| | | | v v [SurfaceFlinger] [ Composite: 5.9ms ⚠️ ]瓶颈说明:
- ⚠️ Buffer Wait 超时 (27.6ms),SF 调度间隙导致 buffer 等待
- ⚠️ SF Composite 超时 (5.9ms)
match_tag 来源 状态 SF latched …7216#NotificationShade app_produced_but_sf_delayed SF_SCHEDULING_ISSUE False
match_tag: DrawFrames-5667598#NotificationShade
-
v-drop: 2
-
区间: 22.68ms
-
期望帧数: 3
-
prev SF:
5667611 -
curr SF:
5667619- App 产出帧数: 1
- App 未产出周期: 1
- SF 跳过帧数: 0
- 主因: App 部分未出帧 + SF 调度延迟
帧流程时序图 (Perfetto UI 风格)
┌─ Curr SF: 5667619 ────────────────────────────────────────────┐ │ Total: 38.3ms │ │ ① 4.1ms █████ │ ② 28.9ms ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ⚠️ STALL │ ③ 5.4ms ▒▒▒▒▒▒▒ ⚠️ │ UI(1.7ms): trav=1.1ms │ RT(4.2ms): swap=1.6ms └────────────────────────────────────────────────────────────┘图例: ⓪ 帧间间隙 | ① App渲染(UI+RT) | ② Buffer等待 | ③ SF合成 | ⚠️ 超时
帧流程详细分析 (VSYNC Pipeline)
[VSYNC-app] |__| (Signal) | v [App Main] [ Choreographer#doFrame: 1.7ms ] | v [App Render] [ DrawFrames: 4.2ms ] | v [BufferQueue] [ Buffer Wait: 28.9ms ⚠️ ] | [VSYNC-sf] |__| | | | v v [SurfaceFlinger] [ Composite: 5.4ms ⚠️ ]瓶颈说明:
- ⚠️ Buffer Wait 超时 (28.9ms),SF 调度间隙导致 buffer 等待
- ⚠️ SF Composite 超时 (5.4ms)
match_tag 来源 状态 SF latched …7614#NotificationShade app_produced_but_sf_delayed SF_SCHEDULING_ISSUE False
match_tag: DrawFrames-5667971#NotificationShade
-
v-drop: 2
-
区间: 26.86ms
-
期望帧数: 3
-
prev SF:
5667976 -
curr SF:
5667985- App 产出帧数: 0
- App 未产出周期: 2
- SF 跳过帧数: 0
- 主因: App 在此区间未产出帧
帧流程时序图 (Perfetto UI 风格)
┌─ Curr SF: 5667985 ────────────────────────────────────────────┐ │ Total: 25.2ms │ │ ① 9.4ms ██████████████████ │ ② 12.0ms ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ⚠️ STALL │ ③ 3.8ms ▒▒▒▒▒▒▒ │ UI(5.8ms): trav=5.7ms │ RT(6.1ms): swap=2.8ms └────────────────────────────────────────────────────────────┘图例: ⓪ 帧间间隙 | ① App渲染(UI+RT) | ② Buffer等待 | ③ SF合成 | ⚠️ 超时
帧流程详细分析 (VSYNC Pipeline)
[VSYNC-app] |__| (Signal) | v [App Main] [ Choreographer#doFrame: 5.8ms ] [ └─ traversal: 5.7ms ] | v [App Render] [ DrawFrames: 6.1ms ] | v [BufferQueue] [ Buffer Wait: 12.0ms ⚠️ ] | [VSYNC-sf] |__| | | | v v [SurfaceFlinger] [ Composite: 3.8ms ]瓶颈说明:
- ⚠️ Buffer Wait 超时 (12.0ms),SF 调度间隙导致 buffer 等待
match_tag: DrawFrames-5668399#NotificationShade
-
v-drop: 2
-
区间: 23.70ms
-
期望帧数: 3
-
prev SF:
5668412 -
curr SF:
5668420- App 产出帧数: 1
- App 未产出周期: 1
- SF 跳过帧数: 0
- 主因: App 部分未出帧 + SF 调度延迟
帧流程时序图 (Perfetto UI 风格)
┌─ Curr SF: 5668420 ────────────────────────────────────────────┐ │ Total: 36.7ms │ │ ① 2.7ms ███ │ ② 29.3ms ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ⚠️ STALL │ ③ 4.7ms ▒▒▒▒▒▒ │ UI(1.1ms): trav=0.7ms │ RT(2.6ms): swap=1.0ms └────────────────────────────────────────────────────────────┘图例: ⓪ 帧间间隙 | ① App渲染(UI+RT) | ② Buffer等待 | ③ SF合成 | ⚠️ 超时
帧流程详细分析 (VSYNC Pipeline)
[VSYNC-app] |__| (Signal) | v [App Main] [ Choreographer#doFrame: 1.1ms ] | v [App Render] [ DrawFrames: 2.6ms ] | v [BufferQueue] [ Buffer Wait: 29.3ms ⚠️ ] | [VSYNC-sf] |__| | | | v v [SurfaceFlinger] [ Composite: 4.7ms ]瓶颈说明:
- ⚠️ Buffer Wait 超时 (29.3ms),SF 调度间隙导致 buffer 等待
match_tag 来源 状态 SF latched …8415#NotificationShade app_produced_but_sf_delayed SF_SCHEDULING_ISSUE False
match_tag: DrawFrames-5668472#NotificationShade
-
v-drop: 5
-
区间: 51.52ms
-
期望帧数: 6
-
prev SF:
5668484 -
curr SF:
5668537- App 产出帧数: 2
- App 未产出周期: 3
- SF 跳过帧数: 0
- 主因: App 部分未出帧 + SF 调度延迟
深层根因分析:
- UI 线程 Choreographer#doFrame 36.4ms 超时,其中 animation 占 33.8ms
- CPU 状态: Running 16% (5.9ms) / Sleeping 84% (31.4ms)
- 根因: 线程池调度饥饿(线程就绪但无 CPU 可用)
- 瓶颈线程: SystemUIBg-3 (Runnable 33.6ms)
- 唤醒链 (ndroid.systemui Sleep 31.0ms):
SystemUIBg-3 **[R 33.6ms]** → SystemUIBg-7 [S 35.1ms] → SystemUIBg-1 [S 35.1ms] → SystemUIBg-4 [S 34.2ms] → SystemUIBg-2 [S 34.1ms] → ndroid.systemui
帧流程时序图 (Perfetto UI 风格)
┌─ Curr SF: 5668537 ────────────────────────────────────────────┐ │ Total: 51.4ms │ │ ① 39.7ms ██████████████████████████████████████ ⚠️ │ ② 8.9ms ▓▓▓▓▓▓▓▓ ⚠️ STALL │ ③ 2.8ms ▒▒ │ UI(36.4ms): anim=33.8ms │ RT(4.3ms): swap=0.8ms └────────────────────────────────────────────────────────────┘图例: ⓪ 帧间间隙 | ① App渲染(UI+RT) | ② Buffer等待 | ③ SF合成 | ⚠️ 超时
帧流程详细分析 (VSYNC Pipeline)
[VSYNC-app] |__| (Signal) | v [App Main] [ Choreographer#doFrame: 36.4ms ⚠️ ] [ └─ animation: 33.8ms ] | v [App Render] [ DrawFrames: 4.3ms ] | v [BufferQueue] [ Buffer Wait: 8.9ms ⚠️ ] | [VSYNC-sf] |__| | | | v v [SurfaceFlinger] [ Composite: 2.8ms ]瓶颈说明:
- ⚠️ Choreographer#doFrame 超时严重 (36.4ms >> 16.67ms),其中 animation 占 33.8ms
- ⚠️ Buffer Wait 超时 (8.9ms),SF 调度间隙导致 buffer 等待
超时 Slice CPU 状态分布:
线程 Slice 耗时 Running S(睡眠) R(就绪) D(IO) 根因判断 UI Thread Choreographer#doFrame 36.4ms 16% (5.9ms) 84% (31.4ms) 0% (0.1ms) 0% (0.0ms) RUNNABLE_STARVATION match_tag 来源 状态 SF latched …8487#NotificationShade app_produced_but_sf_delayed SF_SCHEDULING_ISSUE False …8532#NotificationShade app_produced_but_sf_delayed SF_SCHEDULING_ISSUE False
详细分析报告
| 报告 | 文件 | 状态 |
|---|---|---|
| Buffer Stall 深度分析 | buffer_stall_deep_report.md | - |
| 刷新率变化分析 | refresh_rate_report.md | available |
| AI 根因分析 | ai_root_cause_report.md | available |
| AI Prompt (可手动验证) | ai_root_cause_prompt.md | available |
报告由 vdrop-pipeline-orchestrator V1.1 增强版自动生成 (Tier 3 + Tier 4 深度分析 + Tier 5 AI 根因)