Android 之CPU监控命令

2019-10-10  本文已影响0人  PuHJ

一、前言

此篇文章就是通过分析整个操作系统或者单个进程CPU,来监控应用的性能。而在Linux世界中,一切对象皆文件。进程执行的时候,也会将相关的信息保存在约定好的文件中,所以熟悉这些文件是必要的。

二、CPU数量

系统的CPU数量存放在/sys/devices/system/cpu/possible中,如下输出共有0至3四个CPU。

root@p212:/proc # cat /sys/devices/system/cpu/possible
0-3

三、CPU频率

利用上面的命令可以知道CPU个数,下面可以查看每个CPU对应的CPU频率。
/sys/devices/system/cpu/【cpu0】/cpufreq/cpuinfo_max_freq

root@p212:/proc # cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

1512000

四、系统负载

/proc/loadavg文件中存放系统平均负载相关信息。

127|root@p212:/ # cat /proc/loadavg
2.86 2.67 2.68 3/530 15713

五、CPU调度

/proc/[pid]/sched,pid为进程号

130|root@p212:/ # cat /proc/4065/sched
system_server (4065, #threads: 83)
-------------------------------------------------------------------
se.exec_start                                :     118617735.634033
// 虚拟运行时间,cfs公平调度实体下使用
se.vruntime                                  :       6176888.422605
// 总共运行时间
se.sum_exec_runtime                          :         11438.649001
se.statistics.wait_start                     :             0.000000
se.statistics.sleep_start                    :     118617735.634033
se.statistics.block_start                    :             0.000000
se.statistics.sleep_max                      :         58588.327902
se.statistics.block_max                      :           175.110499
se.statistics.exec_max                       :            10.003042
se.statistics.slice_max                      :             8.983541
se.statistics.wait_max                       :            34.791083
se.statistics.wait_sum                       :          9057.778515
se.statistics.wait_count                     :                64578
// io 等待时间
se.statistics.iowait_sum                     :          5837.190865
// io 等待次数
se.statistics.iowait_count                   :                 1167
se.nr_migrations                             :                 5096
se.statistics.nr_migrations_cold             :                    0
se.statistics.nr_failed_migrations_affine    :                    0
se.statistics.nr_failed_migrations_running   :                 3800
se.statistics.nr_failed_migrations_hot       :                  766
se.statistics.nr_forced_migrations           :                    0
se.statistics.nr_wakeups                     :                54333
se.statistics.nr_wakeups_sync                :                   29
se.statistics.nr_wakeups_migrate             :                  959
se.statistics.nr_wakeups_local               :                25610
se.statistics.nr_wakeups_remote              :                28723
se.statistics.nr_wakeups_affine              :                  929
se.statistics.nr_wakeups_affine_attempts     :                13888
se.statistics.nr_wakeups_passive             :                    0
se.statistics.nr_wakeups_idle                :                    0
avg_atom                                     :             0.200889
avg_per_cpu                                  :             2.244632
// 上下文切换次数
nr_switches                                  :                56940
// 主动上下文切换次数,比如获取不到资源,主动放弃CPU
nr_voluntary_switches                        :                54309
// 上被动下文切换次数,如果被动上下文切换次数过高,说明有大量线程抢占CPU资源
nr_involuntary_switches                      :                 2631
se.load.weight                               :                 1586
se.avg.runnable_avg_sum                      :                  973
se.avg.runnable_avg_period                   :                47365
se.avg.load_avg_contrib                      :                   32
se.avg.decay_count                           :            113122688
// struct_task是哪种任务,如先进先出,后台等
policy                                       :                    0
// 优先级
prio                                         :                  118
clock-delta                                  :                  125

六、/proc/stat

查看系统整体情况

130|root@p212:/ # cat /proc/stat
// 分别是:user time、nice time、system time、 idle time、 iowait、irq、softirq
cpu  3257003 31974 2667163 8808597 6822 14 12331 0 0 0
cpu0 1347460 11169 1401885 8702614 5321 0 10851 0 0 0
cpu1 1525121 10689 1002194 81153 2 7 594 0 0 0
cpu2 382045 5510 261340 15158 0 7 886 0 0 0
intr 241202651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54961687 0 0 0 0 7214039 0 0 12021142 0 817162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56275 152858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7214037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27157318 0 13596066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 293 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 2369775 218897 0 0 0 0 0 0 0 168729 0 0 0 0 0
ctxt 531798377
btime 1420070402
processes 95535
procs_running 4
procs_blocked 0
softirq 67877118 94 25753607 4296 1442197 94 94 315020 15626967 150 24734599

CPUn:是对应的CPU的信息。(时间单位jiffies)
intr :系统中断情况
ctxt :系统上下文切换次数
btime :系统启动时间
processes :系统创建的进程数量
procs_running :当前处于Runnable状态的进程个数
procs_blocked :当前处于等待I/O完成的进程个数
softirq :系统软中断情况

七、proc/[pid]>/stat

查看某一个进程的stat,也有/proc/[pid]/task/[tid]/stat命令,这个是查看PID进程下的TID的stat。

130|root@p212:/ # cat /proc/4065/stat
4065 (system_server) S 3753 3753 0 0 -1 1077936448    (1~9)
763146 0 859 0 321121 178088 0 0 18    (10~18)
-2 83 0 1080 1707184128 15150 18446744073709551615  (18~25)
2863460352 2863478136 4289341088 4289338152 4148691404 0 4612 0 38136 18446744073709551615 0 0 17 1 0 0 0 0 0 2863484120 2863484928 2864824320 4289342379 4289342455 4289342455 4289343456 0

上一篇 下一篇

猜你喜欢

热点阅读