cpu 性能分析基础

文章目录

  • [1 理论基础](#1 理论基础)
    • [1.1 cpu load 运行队列](#1.1 cpu load 运行队列)
    • [1.2 上下文切换](#1.2 上下文切换)
    • [1.3 中断](#1.3 中断)
    • [1.4 cpu usage](#1.4 cpu usage)
    • [1.5 时间](#1.5 时间)
  • [2 工具](#2 工具)
    • [2.1 proc](#2.1 proc)
  • [3 其他工具](#3 其他工具)
  • [4 调优](#4 调优)

1 理论基础

1.1 cpu load 运行队列

Linux进程,要么是可运行状态,要么是阻塞状态。可运行不一定是正在运行,可能是正在等待进程调度。阻塞可能是在等待IO设备数据,也可能是在等待系统调用返回。可运行进程的队列越长,处于等待状态的进程就越多。

在一定的时间内,可运行进程个数的平均值,包括正在运行的进程,即平均负载,这个时间一般为1分钟、5分钟、15分钟。理想情况下,平均负载不超过CPU核心数的70%

1.2 上下文切换

单核CPU一次只能运行一个进程或线程,超线程除外,看上去多个任务在同时运行,其实是Linux内核在不同的进程间切换,公平地分配CPU时间片,这便是上下文切换。上下文切换,需要移动跟踪进程的大量信息,开销很大。内核调度,会周期性地中断正在运行的进程,切换其它进程,引起上下文切换。如果上下文切换明显多于定时器中断,那么可能是IO请求或长时间的系统调用造成的,在这种操作不能立即完成的情况下,为了提高CPU效率,内核也会调度进程,发生上下文切换。

1.3 中断

硬件设备有事件需要内核处理时,会触发中断,即硬中断。如果有相应的已注册的中断处理程序,就会处理这个中断,否则将忽略。中断处理程序运行时的优先级很高,速度也很快。如果不需要高优先级时,会启动下半部,交给软中断处理程序。

1.4 cpu usage

CPU状态,包括idle空闲状态、执行user用户代码的用户态、执行system系统代码的内核态、执行低优先级用户代码的友好用户态、iowait状态、irq硬中断状态、softirq软中断状态。

CPU使用率即CPU各个状态占总时间的百分比,常用来作为衡量系统性能的一个指标。理想情况下,系统CPU使用率不超过70%。

1.5 时间

应用程序在运行时,消耗在系统调用即内核上的时间为系统时间,消耗在依赖库和程序代码上的时间为用户时间。

分析CPU性能问题时,往往需要细化到主要是哪个函数或哪行代码在消耗CPU时间。

2 工具

2.1 proc

通过/proc/cpuinfo文件可以查看cpu相关信息

3 其他工具

4 调优

相关推荐
兰琛2 小时前
Compose组件转换XML布局
android·xml·kotlin
水w3 小时前
【Android Studio】解决报错问题Algorithm HmacPBESHA256 not available
android·开发语言·android studio
隐-梵5 小时前
Android studio进阶教程之(二)--如何导入高德地图
android·ide·android studio
Kika写代码6 小时前
【Android】界面布局-线性布局LinearLayout-例子
android·gitee
wangz766 小时前
kotlin,jetpack compose,使用DataStore保存数据,让程序下次启动时自动获取
android·kotlin·datastore·jetpack compose
Thread.sleep(0)8 小时前
WebRTC源码解析:Android如何渲染画面
android·webrtc
Android 小码峰啊9 小时前
Android Dagger 2 框架的注解模块深入剖析 (一)
android·adb·android studio·android-studio·androidx·android runtime
Android 小码峰啊9 小时前
Android Fresco 框架缓存模块源码深度剖析(二)
android
大胃粥11 小时前
Android V app 冷启动(8) 动画结束
android
ufo00l11 小时前
Kotlin在Android中有哪些重要的应用和知识点是需要学习或者重点关注的
android