linux系统cpu使用率单核显示问题

发布时间 2023-09-01 17:12:51作者: JH爱学习

目录

一、问题场景

二、问题产生原因以及解决办法

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文件下,则系统全局使用该文件。