cpu优化方法

本文探讨了如何通过工具如threadtop和trace分析CPU占用高的原因,包括异常线程检测、日志管理、CGroup调度和代码优化。同时分享了降低CPU占用的实际案例和性能问题解决方案,以及对simpleperf和systrace分析技巧的兴趣激发。
摘要由CSDN通过智能技术生成
  • 如何找到谁占用了cpu?

  1. cpu高的时候有没有抓到进程threadtop,从threadtop找到top 3线程和正常场景对比一下就知道是否有异常
  2. 对明显有异常的线程,看下是否抓到simplerperf trace或systrace,从trace中找到高频调用栈是否异常
  3. 如果没有抓到,搭建相似环境,尝试复现后抓取现场
  4. 如果复现不了高cpu bug,从系统打印出来的log入手分析,筛选出top threadid打印出来log,从log中猜测执行了什么任务,以及频率如何?
  5. 如果复现了,但还是找不到,集成asm插桩工具后,抓取systrace,能定位到哪个函数调用最耗cpu
  • 如何降低cpu?

介绍遇到过最多的几类原因,以及如何降下去的

  1. log打印过多,占用了6%(100%)cpu(调高默认日志等级,日志删减)
  2. 系统整体cpu负载高,cpu超过95%(100%),系统响应时间明显延迟(大概率是有进程cpu超标了,如果屏幕多,产品逻辑要求多个app一起运行,也要通过cgroup讲重要的进程绑定到大核上,将不重要的绑定在小核上,极端场景下卡不重要的进程,优先保证重要的场景不卡顿,无延迟
  3. App代码不好导致性能问题:一言难尽,不再重复
  4. 内存高的app GC频繁(例如地图导航):在内存充足的系统中,提升GC阈值可以显著减少gc cpu占用

后面介绍一些项目中遇到实际bug:常见的cpu高Case-CSDN博客

如果大家有simpleperf和systrace的分析技巧感兴趣,请在评论区+1,如果有人想了解,我会专门写一篇文章给大家介绍

感谢您抽出宝贵时间读完本文,希望您有收获!能不能动动小手指给个❤鼓励一下我!再走,感激不尽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值