有时候对于C或者C++程序来说,会比较高的占用电脑cpu。
而且程序一般运行在linux环境下,刚好之前排查过这类问题,作个简单的记录。
一般采用三个步骤,可大致定位问题位置:
(1)使用 top 命令查看cpu占用较高的前几位程序,确定相应的进程。
(2)对于高占用cpu的程序,依次分析。使用 top -H -p PID,进一步查看该进程内,哪些线程在高占用cpu。将目标缩小到线程级别。
(3)使用strace -p 线程ID,进一步查看线程内,哪个函数调用在高占cpu。这样可以基础对照着代码查看。
本人要排查时,发现主要是对于系统函数的频繁调用会很容易导致高cpu,如对select或者poll的超时时间设置过短,导致频繁调用select或者poll等。