CPU状态
sleeping 线程处于休眠状态 一般是在等待事件驱动
runnable 线程有任务要运行,但是没有cpu调度让它运行,如果长时间调度不到,说明CPU繁忙
running 线程正在运行
uninterruptible sleep NON IO 不可中断的休眠,非IO 在等内核锁,通常是低内存导致等待
uninterruptible sleep Block IO 不可中断的休眠 IO阻塞
::blocked_reason
CPU usage:
某阶段总的CPU运行时间 / duration
Wall duration / selected range
某个进程CPU Usage From SQL:
SELECT process.name, (sum(dur)/1e9) AS cpu_sec
FROM sched
JOIN thread using(utid)
JOIN process using(upid)
WHERE ts <= (SELECT ts+5000000000 FROM sched ORDER BY ts LIMIT 1)
GROUP BY upid
ORDER BY cpu_sec desc
LIMIT 100;
统计某个进程在各CPU上的CPU Usage:
SELECT
process.name as process,
cpu,
sum(dur) / 1e9 as cpu_sec
FROM sched
INNER JOIN thread USING(utid)
INNER JOIN process USING(upid)
WHERE process.name LIKE "%cameraserver%"
GROUP BY upid, cpu
ORDER BY cpu_sec desc
LIMIT 300;
统计某个线程在各CPU上的CPU Usage From SQL:
SELECT
thread.name as thread,
cpu,
sum(dur) / 1e9 as cpu_sec
FROM sched
INNER JOIN thread USING(utid)
INNER JOIN process USING(upid)
WHERE thread.name LIKE "%C3Dev-0-ReqQueu%"
GROUP BY utid, cpu
ORDER BY cpu_sec desc
LIMIT 300;
查看各CPU支持的所有频率:
select * from cpu_freq
条件查询时,忽略大小写
SELECT * FROM slice WHERE LOWER(name) LIKE "%cam%" LIMIT 50
Trace最开始的5秒,每个进程的CPU Time
SELECT process.name, SUM(sched.dur)/1e9 AS cpu_sec
FROM sched
JOIN thread using(utid)
JOIN process using(upid)
WHERE ts <= (SELECT ts+5000000000 FROM sched ORDER BY ts LIMIT 1)
GROUP BY upid
ORDER BY cpu_sec DESC
LIMIT 100;
统计处理Camera CaptureRequest的帧率
SELECT COUNT(*)/((MAX(ts) - MIN(ts))/1e9) AS Request_FPS
FROM slice
WHERE name='frame capture'
统计某路Camera Stream的帧率(以预览为例)
SELECT COUNT(*)/((MAX(ts) - MIN(ts))/1e9) AS FPS
FROM slice
JOIN thread_track ON slice.track_id = thread_track.id
JOIN thread USING(utid)
WHERE slice.name LIKE '%queueBuffer%' AND thread.name like '%PreviewSpacer%'
统计某路Camera Stream相邻两帧的时间间隔,用于衡量抖动(以预览为例)
SELECT ((slice.ts) - LAG(slice.ts,1) OVER (ORDER BY (slice.ts) ASC))/1e6 AS diff_ms
FROM slice
JOIN thread_track ON slice.track_id = thread_track.id
JOIN thread USING(utid)
WHERE slice.name LIKE '%queueBuffer%' AND thread.name like '%PreviewSpacer%'
LIMIT -1 OFFSET 1 --LIMIT设置为-1表示选择所有剩余行,OFFSET为1表示跳过第一行
查看cameraservver的内存
mem.locked VmLck VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘
mem.rss VmRSS RSS值,这里的值是RssAnon、RssFile和RssShmem的和
mem.rss.anon RssAnon 匿名RSS内存大小
mem.rss.file RssFile 文件RSS内存大小
mem.rss.shmem RssShmem 共享内存RSS内存大小
mem.rss.watermark VmHWM Peak RSS(“high water mark”).
mem.swap VmSwap 进程Swap内存大小
mem.virt VmSize 进程虚拟内存大小
oom_score_adj oom_score_adj 当前该进程的OOM Score ADJ值
SELECT c.ts, c.value, t.name as counter_name, p.name as proc_name, p.pid
FROM counter as c
LEFT JOIN process_counter_track as t ON c.track_id = t.id
LEFT JOIN process as p USING (upid)
WHERE t.name LIKE 'mem.%' AND proc_name LIKE '%cameraserver%'