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上下文切换参数