debug_cat 发表于 2023-2-24 10:06

Android 关闭CPU核心模拟低配环境

本帖最后由 莫问刀 于 2023-2-24 10:06 编辑

## 背景
手机性能太强了,代码写得再烂也被高性能处理包容,我需要把手机降至低配环境来模拟盒子的情况,这要怎么做呢。查到资料,可以关闭CPU的核心或者限制频率来达到目的。
仅限于骁龙CPU。模拟低配环境来测试软件的流畅性,是否卡顿掉帧,或者anr。

### 环境要求
设备必须root!
骁龙CPU。
adb。

### 开始搞事

```shell

adb shell
su
cd /sys/devices/system/cpu

drwxr-xr-x 10 root root    0 1970-07-09 21:44 cpu0
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu1
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu2
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu3
drwxr-xr-x9 root root    0 2022-01-15 17:15 cpu4
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu5
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu6
drwxr-xr-x8 root root    0 2022-01-15 17:15 cpu7
```

这是我骁龙845,8核心,0-7开始数字越大,性能越强。
比如0-3是小核心。
3-6是中核心。7是大核心。
如果是最近架构比如888,8g1,7是超大核。

我们可以关闭中核心和大核心保留4个小核心。

```shell

blueline:/sys/devices/system/cpu # echo "0" > cpu7/online
blueline:/sys/devices/system/cpu # echo "0" > cpu6/online
blueline:/sys/devices/system/cpu # echo "0" > cpu5/online
blueline:/sys/devices/system/cpu # echo "0" > cpu4/online
```

关闭之后,可以通过软件看看情况。



如果想模拟更极端情况,可以保留cup0来测试,单核如果流畅运行,你还担心盒子上面会卡?


在这种环境下我们就可以开始运行自己写的App了,我这边是公司的tv项目,因为在做列表滑动优化,经过优化后,在这种低配环境下不掉帧,基本上到了其他盒子也稳定跑。

剩下的就是抓trace看帧数据了。

## 总结
得益于现在硬件提升太快了,很多人,很多公司在写软件的时候都不考虑性能优化的。
就导致了在老设备上面运行软件各种掉帧,卡顿,anr。很无语。

我们的客户基本上都是4.4,512mb -1024mb内存系统emmc储存的古董盒子,要写好App压力有点大,目前在不断优化中。
搞事情得益于root环境,所以大家想模拟出各种环境,还是得有一台能玩的设备。

关核心,应该是和系统的省电模式一个道理,极限省电模式可能是只留下一个小核心在跑了。在手机快没电了可以通过关核心来省电。

可以写个软件通过软件来打开和关闭核心,有时间再写吧~~

侃遍天下无二人 发表于 2023-2-24 10:12

本帖最后由 侃遍天下无二人 于 2023-2-24 10:16 编辑

啊哈哈哈,是的,很多线程安全和内存泄漏问题在高性能下是暴露不出来的
反正我解决线程安全的思路很简单,直接给整个类加锁就完了,然后在哪个机子上正常就放哪个机子跑,毕竟我写/改的app也没几个人用,而且一般也不需要开太久,在崩溃之前肯定能完成任务
https://i1.hdslb.com/bfs/archive/6212c7a6bf31f727d9326340be81f905bf4c67ac.jpg

debug_cat 发表于 2023-2-24 10:28

补补23456 发表于 2023-2-24 10:26
这种测试方法挺不错的。不过我平时在电脑上用安卓虚拟机就挺卡了可能是电脑配置太低

不能用虚拟机,比较虚拟机用的是电脑的虚拟化技术,而且是x86架构吧,手机都是arm的了,要模拟就应该用真机。模拟器意义不大。

补补23456 发表于 2023-2-24 10:26

这种测试方法挺不错的。不过我平时在电脑上用安卓虚拟机就挺卡了{:301_1004:}可能是电脑配置太低

debug_cat 发表于 2023-2-24 10:27

侃遍天下无二人 发表于 2023-2-24 10:12
啊哈哈哈,是的,很多线程安全和内存泄漏问题在高性能下是暴露不出来的
反正我解决线程安全的思路很简单, ...

我现在的项目用户kw的{:1_937:}

fyabcabc 发表于 2023-2-24 10:34

楼主图片上的软件是什么

debug_cat 发表于 2023-2-24 10:37

fyabcabc 发表于 2023-2-24 10:34
楼主图片上的软件是什么

scene4,最新版本应该是5了

smile1110 发表于 2023-2-24 12:11

关闭后怎么再打开呀

debug_cat 发表于 2023-2-24 12:31

smile1110 发表于 2023-2-24 12:11
关闭后怎么再打开呀

echo "0" > cpu4/online关闭
echo "1" > cpu4/online恢复

smile1110 发表于 2023-2-24 13:44

莫问刀 发表于 2023-2-24 12:31


还有件事哥们,这个关闭手机重启后依旧关闭不,我想把我的865的大核关了省电
页: [1] 2
查看完整版本: Android 关闭CPU核心模拟低配环境