当前位置: 首页> 教育> 幼教 > CPU飙高调优知识

CPU飙高调优知识

时间:2025/7/11 8:13:28来源:https://blog.csdn.net/huantai3334/article/details/139648285 浏览次数:0次

CPU的load和使用率基础概念:

        参考:https://www.cnblogs.com/rexcheny/p/9382396.html

1. 什么是CPU load:

  • 一段时间内处于可运行状态和不可中断状态的进程平均数量。
  • 可运行分为正在运行进程和正在等待CPU的进程,状态为R;不可中断则是它正在做某些工作不能被中断比如等待磁盘IO等,其状态为D,它是从另外一个角度体现CPU的使用状态。

理想的CPU load是多少:

  • 它跟CPU核心数量有关,理想情况下,一个核心被一个进程占用。
  • 如果4个核心,跑4个进程,此时Load是4但是也不高。如果2个核心,依然跑4个进程,这就意味着有一半进程在某一个时刻抢不到CPU,这时候Load还是4,如果是短期状态还无所谓,如果长期是这个状态你就要注意了。

查看Linux系统物理CPU个数、核心数和逻辑CPU个数:

总核数 = 物理CPU个数 * 每个物理CPU的核心数

总逻辑CPU数 = 物理CPU个数 * 每个物理CPU的核心数 * 超线程数量

查看物理CPU个数:

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看每个物理CPU中的核心数:

cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU的个数:

cat /proc/cpuinfo| grep "processor"| wc -l

获取CPU总核数:

grep -c 'model name' /proc/cpuinfo

2. 什么是CPU使用率:

  • 利用率是一段时间内CPU被占用的情况。

CPU负载高利用率低:

  • 说明等待执行的任务很多,但是通常任务多CPU使用率也会比较高,如果低就说明CPU根本没工作,哪些很多的任务处于等待状态,可能进程僵死了。
  • 可以通过命令ps –axjf查看是否存在D状态的进程,该状态时不可中断的睡眠状态。这种状态无法被kill。而有时候通过top命令也看不出来,只能显示LOAD高,但是没有哪个进程的CPU使用率明显高,你可以通过ps –ux来查看。

CPU利用率高负载低:

  • 说明任务少,但是任务执行时间长,有可能是程序本身有问题,如果没有问题那么计算完成后,则利用率会下降。

3. 相关知识:

CPU核心数与线程数的区别:

  • 核心数:指CPU的物理核心数,是硬件上存在有几个核心。
  • 线程数:是一种逻辑的概念,也就是模拟出的CPU核心数。CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。

什么是超线程:

  • 超线程(HT):超线程和多线程不同,多线程是程序方面的属于软的代码级别的,超线程是硬件架构方面的,通过控制器来模拟逻辑核心。

超线程有什么作用:

  • 为了提高效率,更高的榨干控制器的运行能力。
  • 因为任务过来之后很多时候不是马上就能由运算器进行计算的,它还需要其他资源比如网络传输过来的数据或者是硬盘中的数据,那么此时运算器就闲着,为了更大限度利用运算器,我可以设置2个控制器对应一个运算器,其中一个控制器处理的程序需要等待数据的时候,如果另外一个控制器处理的程序不需要等待或者数据已经准备好,那么就可以立即发送给运算器进行计算。

调优命令及工具:

1. 命令:

查看进程中哪个线程使用率高:

top -pH pid 看 %CPU

vmstat 报告虚拟内存状态的统计信息命令:

vmstat 1 6 -w ->(间隔1秒,一共6次,宽输出模式)

查看队列长度,r表示运行和等待CPU时间片的进程数量;b表示等待资源的进程数量比如IO、或者内存交互等。

vmstat 命令_vmstat命令-CSDN博客

2. 工具:

Jstack命令

fastThread线上工具

CPU飙高原因总结:

  • 1. CPU发生了大量计算。
    • 表现1:大量线程在等待计算结果,CPU一直在计算,会影响后序线程。
    • 表现2:死循环导致大量计算
  • 2. 频繁GC
  • 3. 死锁
  • 4. 线程数打满
    • 表现1:多个耗时长的操作一直占用线程不释放(专业术语:线程处于等待状态),最后导致线程数打满。 例如:《序列化问题引起的应用服务CPU飙高》

关键字:CPU飙高调优知识

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: