Cgroup中各种命令
linux查询线程运行状态
adb shell watch -n 1 'cat /proc/15028/sched'执行结果

以上数据的解释
进程基本信息
- cgroup_test_top (15028, threads: 1): 进程名为”cgroup_test_top”,PID为15028,有1个线程
调度实体(Scheduling Entity)统计
- se.exec_start: 1486296.186213: 最近一次开始在CPU上执行的时间戳(毫秒)
- se.vruntime: 344688.395523: 虚拟运行时间(毫秒),CFS调度器用于公平调度的关键指标
- se.sum_exec_runtime: 1389935.451169: 总CPU执行时间(毫秒) - 这是您程序监控的核心指标
- se.nr_migrations: 84659: 进程在不同CPU核心间迁移的次数
睡眠和阻塞统计
- sum_sleep_runtime: 10509.145946: 进程总睡眠时间(毫秒)
- sum_block_runtime: 8.446094: 进程总阻塞时间(毫秒),通常是等待I/O
- sleep_max: 3052.299905: 单次最长睡眠时间(毫秒)
- block_max: 8.446094: 单次最长阻塞时间(毫秒)
执行时间统计
- exec_max: 2.704012: 单次最长连续执行时间(毫秒)
- slice_max: 32.037241: 最大时间片长度(毫秒)
等待统计
- wait_max: 1468479.052032: 最长等待时间(毫秒)
- wait_sum: 40090767.761165: 总等待时间(毫秒)
- wait_count: 199206: 等待次数
I/O等待统计
- iowait_sum: 0.000000: I/O等待总时间(毫秒)
- iowait_count: 0: I/O等待次数
迁移统计
- nr_migrations_cold: 0: 冷迁移次数(迁移到之前未运行过的CPU)
- nr_failed_migrations_affine: 0: 亲和性迁移失败次数
- nr_failed_migrations_running: 126: 运行时迁移失败次数
关键指标解读
对于您的程序来说,最重要的是:
- se.sum_exec_runtime: 这是进程在CPU上实际运行的累计时间,单位为毫秒
- se.nr_migrations: 迁移次数高(84659次)说明这个进程经常在不同CPU核心间切换
- wait_sum vs sum_exec_runtime: 等待时间(40090767ms)远大于执行时间(1389935ms),说明这是一个I/O密集型或经常被调度出去的进程
时间单位说明
虽然显示为毫秒格式,但实际上这些值是从内核的纳秒计数器转换而来的。您的程序正确地提取了se.sum_exec_runtime字段来监控CPU使用时间。