Linux性能学习(1.5):CPU_如何找到CPU使用率高原因

Posted Stoneshen1211

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux性能学习(1.5):CPU_如何找到CPU使用率高原因相关的知识,希望对你有一定的参考价值。

文章目录


参考资料:
1. 嵌入式软件开发杂谈(5):如何查看线程的CPU使用率

2.嵌入式软件开发杂谈(9):如何查找CPU使用率最高的函数—pref的使用

1 总体分析

一般我们会使用top指令来查看CPU使用率,而CPU的使用率分为很多种类:用户态CPU(us)、内核态CPU(sys)、空闲CPU(id)、等待IO(wa)、处理硬中断的CPU(hi)、处理软中断的CPU(si)等等。

用户态CPU比较高,说明用户态进程比较繁忙,需要查询用户态进程的问题,着重查询是那个进程以及那个函数导致的CPU高,从而针对性优化;

内核态CPU比较高,说明内核比较繁忙,应该着重排查内核线程或者系统调用的性能问题,可能原因有:上下文切换频繁、就绪队列等待运行进程/线程太多、死锁等等;

I/O等待的CPU高,说明系统与硬件设备的IO交互时间比较长,可能原因有:进程在正常IO操作、大量不可中断进程等等;

软中断和硬中断高,说明系统发生了大量的中断,所以应该着重排查内核中的中断服务程序,可能原因有软中断中大量网络收发。

2进程分析

上面的参考链接,我们可以使用top或top -Hp PID或perf top等指令来进一步分析是那个进程或者进程中的那个函数导致的CPU使用率过高,从而进行优化。

以上是关于Linux性能学习(1.5):CPU_如何找到CPU使用率高原因的主要内容,如果未能解决你的问题,请参考以下文章

Linux性能学习(1.2):CPU_如何提高CPU缓存命中率

Linux性能学习(1.2):CPU_如何提高CPU缓存命中率

Linux性能学习(1.2):CPU_如何提高CPU缓存命中率

Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数

Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数

Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数