外观
如何理解线程状态区间统计 SQL?
标准回答
先用process和thread表确认目标线程的utid,查看PRAGMA table_info(thread_state)核查字段。将下例utid和纳秒起止时间替换为Trace中的实际值,结束时间要晚于开始。
查询只统计有效已结束状态片段,把跨边界的片段裁剪到选定窗口,结果除以1e6转换为毫秒。Running与R或R+是不同状态;不要用匹配所有R开头字符串的规则,把Running也算成调度等待。
各类状态时间之和若没有覆盖全部窗口,先查线程生命周期、未结束片段或数据缺失。不能默认空缺时间是空闲,也不要给缺失数据强行补成零。
追问与回答
用slice总和算CPU时间可以吗
不行。slice包含等待且可能嵌套重叠。CPU运行时间应由对应调度信息或明确的线程CPU时间得到。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q083