如何在selinux中快速定位cpu占用过高问题:
在嵌入式linux开发中,经常会因为代码中因为一些代码中轮询过快导致cpu占用过高;
可能存在与某个线程中,很难去发现
这里总结了一套对于已知进程中到底是哪个线程引发的cpu占用过高问题行之有效的方法分享
核心命令使用如下:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
(如上命令,有些嵌入式linux版本可能无法支持H参数,可去掉之,即ps -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu)
可以来解析下此命令,此命令的核心在于-eo参数,通过有序排列方式通过ps命令筛选cmd(此cmd就是你需要定位的进程命令挂载名称)进程所有的线程,通过cpu占用由高到低全部打印在shell中。
有了此命令只需要找到起线程命令的pthread_id在起线程的位置加入打印进程号就可以轻松知道对应代码入口的cpu占用是多少。后面具体对应线程那段代码引起的cpu占用过高问题就可以逐步排查之。