背景:
近来有学员朋友询问到了一个他做性能优化时候的一个疑问,那就是他不知道自己的手机设备上的一个cpu情况,他想要知道目前的平台哪些是cpu的大核哪些是cpu的小核,问马哥有没有啥命令或者方法进行查看,这样就可以不需要通过问其同事了,每次问都容易忘记,而且每个平台也不一样。希望有相关命令可以直接看最好,这样就不需要记住和询问别了。
简单总结一下学员问题:
想要一个使用命令方式可以查看当前设备平台的大小核情况。
相关大小核常规认识
一般平时常说的cpu大小核情况,其实说的是cpu一般情况下都是有多个核心的,和我们电脑上cpu是一个情况,但是多核心为了综合性能和功耗上都兼顾,就不能说所有核心都是大核或者小核,一般都是大小核都是共同存在的。
那么是一般以什么标准定义大小核呢?
答案: cpu的最大频率,因为cpu频率越高说明cpu执行速度就越快,即大核就是cpu最大频率高的,小核就是cpu最大频率低的。
知道大小核的判断是靠cpu最大频率来区分问题就好办多了。
命令实战查看cpu大小核
1、查看cpu的总核数
NX563J:/ # cat /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64)
processor : 0
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 1
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 2
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 3
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 4
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 5
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 6
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 7
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
Hardware : Qualcomm Technologies, Inc MSM8998
这里可以到看到当前设备有,最后一个处理器索引是7
processor : 7
那么整个cpu一共有8个核,索引就是0-7
2、查看cpu的频率相关
使用命令如下:
NX563J:/ # cd sys/devices/system/cpu
NX563J:/sys/devices/system/cpu # ls
core_ctl_isolated cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 cpufreq cpuidle isolated kernel_max modalias offline online possible power present uevent
这里可以看到在/sys/devices/system/cpu目录也可以看到cpu的相关目录,也可以看到cpu0-7个目录。
最大频率查看方式可以有两种
第一种,通过归类policy目录查看:
NX563J:/sys/devices/system/cpu # cd cpufreq/
NX563J:/sys/devices/system/cpu/cpufreq # ls
policy0 policy4
NX563J:/sys/devices/system/cpu/cpufreq # cat policy0/cpuinfo_max_freq
1900800
policy0目录一般代表频率分组情况,即8个核一共有2个分组,policy下面的cpuinfo_max_freq可以获取对应的最大频率。
可以看到policy0/cpuinfo_max_freq最大频率是1900800
同样方式看看policy4/cpuinfo_max_freq
NX563J:/sys/devices/system/cpu/cpufreq # cat policy4/cpuinfo_max_freq
2457600
可以看到是第二组的最大频率是2457600,既可以判断出整个cpu大小核情况:
cpu的0-3属于小核
cpu的4-7属于大核
第二种,直接通过cpu目录查看:
NX563J:/sys/devices/system/cpu # cat cpu0/cpufreq/cpuinfo_max_freq
1900800
这种方式也可以看到每个cpu的最大频率,不过看不到对应的cpu分组情况而已。
更多framework实战干货,请关注下面“千里马学框架”