linux系统cpu使用率单核显示问题
目录
一、问题场景
二、问题产生原因以及解决办法
1. 出现原因
2. 解决办法
2.1 设置solaris mode
2.2 保存默认设置为 solaris mode
一、问题场景
使用top查看linux的性能指标,结果出现进程的CPU占用率超出100%却没有卡顿现象,感觉很不科学
想提取linux服务器的进程使用率,通过ps -eo %cpu,ppid,cmd,pid --sort=-%cpu | head -6 和 top -b 两种方法提取,但是遇到一个问题就是取出来的进程有时候是100%+,对于现实和不动的人就不太友好了
二、问题产生原因以及解决办法
1. 出现原因
% cpu 是表示单核 cpu 的占用率, 而不是占用所有 cpu 的占用率。可以通过按1查看系统是否有多个CPU
果然,我的机器的CPU是双核的:%Cpu0,%Cpu1!
也可以输入以下命令,查看CPU信息:
cat /proc/cpuinfo
原因:
假如进程CPU使用率是150%,只说明使用了1.5个CPU的占用,但是设备可能是64核心,所以实际只占用了1.5/64。完全不用担心也不影响使用
2. 解决办法
2.1 设置solaris mode
若想这里显示的%CPU的数据是全部cpu核的使用率,而不是单核,可以通过切换solaris mode模式。
- irix mode 和 Solaris mode两种模式可以通过I(大写i)切换,默认为irix mode
- 对于%cpu这一项在irix mode下,%cpu 就是只计算一个cpu核心,100%代表一个cpu核心达到100%负载,此时如果你有4个核心,就需要除以4
- 对于solaris mode 在irix的基础上除以cpu个数
2.2 保存默认设置为 solaris mode
- 可以用shift + I键切换到Solaris mode,然后用Shift + W键保存到~/.toprc中,这样下次就不需要再手动切换,top命令启动时将读取~/.toprc文件中的配置,自动使用solaris模式。
- 将toprc文件复制到/etc/toprc文件下,则系统全局使用该文件。