CPU使用率查看


top


通过top -d 0.1可以缩短采样时间。

 


-d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。


load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

 

查看多核CPU


top 输入1就可以看到各个核心的CPU使用率 mpstat -P ALL sar -P ALL


 

当然你也可以用htop代替top,htop的详细用法请自行搜索,这里不多介绍了。

 

找到最耗CPU的进程


top -c

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3715 www 20 0 139m 18m 8256 S 2.0 0.5 0:05.22 php-fpm: pool www


 


-c:显示整个命令行而不只是显示命令名。


按大写P   按照cpu使用率排序

假设最耗CPU的进程PID为3715

 

找到最耗CPU的线程

top -Hp 3715

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3715 www 20 0 138m 18m 8280 S 0.0 0.5 0:04.92 php-fpm

 

 


-p:通过指定监控进程ID来仅仅监控某个进程的状态。 -H 显示线程信息 show all threads


显示一个进程的线程运行信息列表

按大写P   线程按照cpu使用率排序

 

查看堆栈,找到线程在干嘛

pstack/jstack/grep  

C进程使用pstack查看线程堆栈信息

java进程采用jstack查看线程堆栈信息.


[root@dev logs]# pstack 3715       
#0 0x00007fa864a334e0 in __accept_nocancel () from /lib64/libc.so.6
#1 0x0000000000857ca1 in fcgi_accept_request ()
#2 0x000000000085f42d in main ()


 

如果提示 -bash: pstack: command not found 只要安装gdb就可以了


yum install gdb -y


 

查看CPU的平均状况信息


[root@dev logs]# mpstat -P ALL -I SUM 
Linux 2.6.32-504.30.3.el6.x86_64 () 06/10/20 _x86_64(2 CPU)

21:09:44 CPU intr/s
21:09:44 all 2855.24
21:09:44 0 113.53
21:09:44 1 1887.97


mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。 当mpstat不带参数时,输出为从系统启动以来的平均值 mpstat [-P {cpu|ALL}] [internal [count]] internal 相邻的两次采样的间隔时间     count 采样次数,只能和internal一起使用 -P { cpu [,...] | ON | ALL }   #表示监控哪个CPU, cpu在[0,cpu个数-1]中取值 -I { SUM | CPU | ALL }  查看cpu中断的统计 Report interrupts statistics