CPU使用率到100%了?

当某个应用的CPU使用率达到100%时,我们应该怎么办? 前面有几篇你博文对平均负载和 CPU 上下文切换进行了介绍,接下来我们聊聊你最常用什么指标来描述系统的 CPU 性能呢?我想你的答案,可能不是平均负载,也不是 CPU 上下文切换,而是另一个更直观的指标—— CPU 使用率。 我们前面说过,CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。那么,作为最常用也是最熟悉的 CPU 指标,你能说出 CPU 使用率到底是怎么... 阅读详情

以下文章来源于涛歌依旧 ,作者点击关注👉👉

最近,一位同事急匆匆跑过来跟我说:糟糕了,服务器CPU的使用率达100%了。

我心想不可能啊,CPU有那么多核,怎会跑满?于是看了一眼,结果虚惊一场。

这位同事看到的100%,并非指整个CPU使用率到了100%,而是指CPU某些核的使用率到了100%.

趁此机会,我来聊聊与CPU相关的概念,对很多软件开发和运维人员来说,这些概念是必须要掌握的:

  • CPU主频

  • 多个CPU

  • 多核CPU

  • 逻辑核(超线程)

  • 大小端

以一款CPU为例,看下具体参数:

图片

      

CPU主频(时钟频率) 

在上面这些参数中,人们最熟知的是CPU主频(时钟频率)。买电脑时,肯定需要看CPU主频是多少。

我们知道:CPU时钟越快,产生上升沿/下降沿的速度就越快,就能更快地迫使其它器件做相应工作。

CPU的时钟,就像龙舟比赛的击鼓人,击鼓频率越快,就迫使划船的人跟上节奏,结果龙舟也越快。

图片

从CPU参数可以看到,该CPU有12个物理核,每个物理核对应2个逻辑核(超线程技术)。所以,从外部看,该CPU有24个核(逻辑核)。

也就是说,该CPU有12个物理上的运算器&控制器,有24个逻辑上的运算器&控制器。

多个CPU

我们看linux命令lscpu给出的信息:


Socket(s): 2

可以看到,在这台服务器上,总共插了2个CPU,  这2个CPU是物理上的CPU, 人眼可以看到,手也可以触摸到:

图片

多核CPU

我们看linux命令lscpu给出的信息:


Core(s) per socket: 12

可以看到,针对每一个物理CPU而言,内部有12个物理核。也就是说,在一个物理CPU内,有12个物理层面的运算器&控制器,它们是实实在在存在的。

很霸气的感觉,12个物理核如下图所示:

图片

逻辑核(超线程)

我们看linux命令lscpu给出的信息:

Thread(s) per core:    2

由于Intel采用了超线程技术,所以每个物理核对应2个逻辑核:

图片

要注意,在物理上看来,只有一个核,但采用了超线程技术,在使用时,实际效果是2个核在同时并行(不是同步并发)工作,也即有2个逻辑核,如下图所示:

图片


那么,在上面这台服务器中,有多少个逻辑核呢?

服务器中插有2个物理CPU, 每个物理CPU有12个物理核,每个物理核有2个逻辑核,故总共48个逻辑核。

因此,当操作系统俯视CPU硬件时,它看到的是,在计算机中,有48个核,即有48个运算器&控制器。

对于操作系统而言,它可以认为有48个CPU核在同时并行(不是同步并发)为它提供服务,lscpu查出的信息如下:

CPU(s):                48

这里的48个CPU(s), 其实就是48个逻辑核。有时,我们也可以说,这台服务器有48个核。

这台服务器有2个CPU, 针对其中一个CPU,我们也可以说,它是"12核24线程"。

操作系统对核的分配 

需要注意的是,如上的服务器有2个CPU,  每个CPU有12物理核,每个物理核有2个逻辑核,这仅仅是针对特定服务器和CPU的。

其他计算机或者CPU, 就不一定如此了。来看我的另外一台服务器,配置略微寒酸:总共只有1个CPU, 1个物理核,1个逻辑核:

ubuntu@VM-0-15-ubuntu:~$ lscpuArchitecture:          x86_64CPU op-mode(s):        32-bit, 64-bitByte Order:            Little EndianCPU(s):                1On-line CPU(s) list:   0Thread(s) per core:    1Core(s) per socket:    1Socket(s):             1NUMA node(s):          1Vendor ID:             GenuineIntelCPU family:            6Model:                 79Model name:            Intel(R) Xeon(R) CPU E5-26xx v4Stepping:              1CPU MHz:               2394.446BogoMIPS:              4788.89Hypervisor vendor:     KVMVirtualization type:   fullL1d cache:             32KL1i cache:             32KL2 cache:              4096KNUMA node0 CPU(s):     0Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch bmi1 avx2 bmi2 rdseed adx xsaveoptubuntu@VM-0-15-ubuntu:~$

如果在这个单核服务器上,运行如下的死循环程序,会如何呢?


#include <stdio.h>
int main(){ while(1); // 死循环 return 0;}

观察top命令给出的结果,可以看到,1个进程就消耗了大约99.0%的CPU,整个CPU的使用率达到99.7%:

图片

        

那么,如果开启2个进程并发执行呢?可以看到,每个进程几乎都是占用49.x%的CPU,整个CPU的使用率达到99.7%:

图片

那么,如果开启3个进程并发执行呢?可以看到,每个进程几乎都是占用32.x%的CPU,整个CPU的使用率达到98.7%:

图片

可以看到,整个CPU几乎被瓜分殆尽。这种调度和分配,是由操作系统完成的。

再来看多核CPU的情况,我找了另一台服务器,有32个逻辑核,简称32个核。运行一下死循环进程,用top命令来分析。

可以看到,1个进程占满1个核,使用率100%, 而服务器32个核的使用率是3.6%:

图片

运行2个进程,可以看到,2个进程都占用99.7%的核,而服务器32个核的使用率是6.5%:

图片

运行3个进程,可以看到,3个进程都占用100%的核,而服务器32个核的使用率是9.8%:

图片

看到使用率为100%时,不要紧张,不要以为CPU就用完了,这台服务器有32个核呢(拥有3200%的能力)。

来看下3个进程时,每个核的具体使用情况(3个进程,总共大概占用300%的核):

图片

这些值会动态地变化,而且不一定是消耗在某些固定的核上。核的调度和资源分配,由操作系统来完成:

图片

CPU大小端

最后,来看一个大小端的问题,看lscpu命令的信息:


Byte Order: Little Endian

它的含义是: CPU是小端模式。相信几乎所有的程序员都听说过这个概念,我们具体来测试一下。

下面是在Intel CPU + Windows + VC++6.0上的测试结果,可以看到:低位的0x78存储在地址较小的位置(小端模式):

图片

下面是对8051单片机进行的仿真测试,可以看到:高位的0x12存储在地址较小的位置(大端模式):

图片

至此为止,我们对CPU的基本参数有了大致了解,这也是linux相关的开发、运维人员必须掌握的。

以后也可以谈笑风生地聊多个CPU、多核CPU、逻辑核和大小端了,而不是一如既往地一知半解。

【Linux】Linux查看机器负载-CPU负载 CPU使用率达到100% 1.美图 阅读详情

相关推荐

Power Automate实战:用SharePoint REST API批量处理列表数据(附JSON解析技巧)

本文深入探讨了如何利用Power Automate调用SharePoint REST API实现列表数据的批量自动化处理。文章详细解析了API的协同工作原理、高效的数据获取与筛选技巧,并重点分享了JSON数据解析的核心难点与实战解决方案,旨在帮助企业用户构建稳定可靠的数据处理流程,提升运营效率。

coffee的博客 769

CPU使用率100%怎么办

通过任务管理器(Windows按Ctrl+Shift+Esc)或Linux的top命令结束高占用进程,注意保留系统关键进程(如Windows的System Idle Process无需处理)。 重启资源管理器(Windows右键任务管理器重启explorer.exe)或直接重启系统释放异常资源。

link458的博客 1万+

SSD性能测试进阶:用fio的io_uring引擎榨干你的NVMe硬盘

本文深入探讨了如何利用fio的io_uring引擎对NVMe SSD进行深度性能测试。通过对比传统libaio引擎,详解了io_uring低开销、高并发的优势。文章提供了从测试矩阵设计、队列深度分析到写入放大观察和尾延迟可视化的完整进阶方法,并附有实战案例与脚本,旨在帮助用户科学压榨NVMe硬盘的极限性能,获取更真实的评估数据。

weixin_29247219的博客 326

CPU 使用率100%的常见原因

java复制下载// 缺少退出条件java复制下载// 无限递归。

C18298182575的博客 692

【保姆级教程】不到一元32位芯片 DIY迷你时钟

基于不到一元的CH32V003F4P9芯片制作的迷你多功能时钟。

twen51的博客 1813

利用GeoTools高效切割GeoTIFF为WebP瓦片:从配置到实战

本文详细介绍了如何利用GeoTools将GeoTIFF高效切割为WebP瓦片,从环境配置到实战技巧全面覆盖。通过对比WebP与PNG格式的优势,展示其在体积压缩和传输效率上的显著提升,并提供多线程切割、内存管理等性能优化方案,帮助开发者快速实现地理空间数据的Web地图服务部署。

agile9scrum的博客 812

mysql查询cpu使用率100%_数据库CPU使用率100% 排查记

1.背景:在监控线上数据库的运行是否安全、正常的过程中,cpu 使用率是一个重要的指标,一旦cpu使用率飙升至90%+甚至达到100%,必然会对数据库的正常工作产生影响。在排查数据库的cpu 飙升的问题前,我们先看下cpu 飙升的原因有哪些。2.cpu使用率飙升的原因首先直观的,cpu使用率过高可能和流量和慢查询有一定的关系进一步查阅相关资料,得到公式:单位时间 CPU 资源 = 查询执行的平均成...

weixin_39683021的博客 1402

【电路设计实战】BUCK降压电路:从原理到PCB布局的降噪与效率优化

本文深入剖析了BUCK降压电路的工作原理,并针对其固有的开关噪声问题,提供了从核心元件选型到PCB布局的全面优化方案。文章重点探讨了电感、电容等关键元件的选型要点,强调了低ESR电容和肖特基二极管的重要性,并详细阐述了如何通过最小化功率回路、保护敏感信号线等PCB布局实战技巧,有效抑制噪声、提升效率与稳定性。

weixin_29304021的博客 217

mysql的cpu使用率100%问题排查

欢迎点击关注gzh:

shemuel的技术笔记 1952

但是我如果真的用差速轮去控制转向 为了尽量原地旋转 转向角度精确 我应该怎么去配置左右两个轮子的速度呢

目标实现方式原地转向左右轮速度相等、方向相反精确角度用 IMU 检测 yaw 实时对齐停止判断达到目标 yaw ± 容差时立即停转控制方式状态机(idle → turning → done)推荐容差2°~3° (可根据实际调整)

qqqweiweiqq的博客 312

基于学术研究于NASA官网GPM卫星数据下载详细教程

基于学术研究于NASA官网GPM卫星数据下载详细教程

珞瑜的博客 8654

再谈CPU使用率100%的问题

曾经我很讨厌那些运维一见到CPU使用率100%的时候就大叫狂跳的样子,我还曾经说过,如果CPU不是拿来用的,难道是用来闲置的吗。  好像我说的话挺有道理。但是,我错了…  不过这也并不意味着运维是对的,CPU出现100%后他们大叫狂跳大多数是觉得自己摊上事了,而并不是基于责任感为了发现并解决问题(这一点请相信我)。不然为什么他们总是把事情丢给研发而不是自己尝试去check一下呢?基于中央处理器的现代

TCP/IP 2万+

【DaVinci Configurator专题】-6-将UDS&OBD诊断数据库文件CDD和PDX导入到CFG

CDD和ODX是两种诊断数据库文件。机器可读的诊断数据库其实就是将传统的Excel调查表等信息编辑成CDD或ODX文件。CDD是Vector私有的一种诊断数据库格式;ODX是国际标准的诊断数据交互格式。CANdelaStudio编辑CDD文件,以及也可以导出ODX文件;ODX Studio用于编辑ODX文件,诊断数据库的编辑其实就是诊断需求的定义。 下面以PDX为例,将其导入到DaVinci Configurator。 目录 1 打开DaVinci Configurator,导入PDX文件 2 解.

「汽车电子助手」的博客 6749

电脑cpu使用率100%怎么解决 试试这些方法

当CPU的使用率达到100%时,系统就会出现卡顿、反应迟缓、甚至崩溃等问题。长期处于高负荷状态,可能对硬件造成一定的损伤。因此,及时找出原因并采取措施解决CPU使用率100%的问题,对于维护计算机的正常运行至关重要。

weixin_56386428的博客 2187

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

某个应用的CPU使用率居然达到100%,该怎么办?

学习倪鹏飞老师linux性能优化实践的笔记,文中大量内容来源于老师的文档材料。 某个应用的CPU使用率居然达到100%,该怎么办CPU 使用率 CPU 使用率 Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中 断,并使用全局变量 Jiffies 记录了开机以来的节拍数。每发生一次时间中断,Jiffies 的值 就加 1。

zhanglu0302的博客 2028

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CPU使用率飙升至100%的诊断与解决方案

CPU使用率飙升至100%是一个复杂的问题,需要从多个角度进行分析和解决。通过理解导致CPU使用率飙升的原因,并采取相应的预防和解决措施,我们可以确保系统的稳定性和性能。希望本文提供的信息和代码示例能够帮助您快速定位和解决CPU使用率飙升的问题。如果您需要进一步的帮助或有其他问题,请随时告知。

2401_85373732的博客 6887

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux命令-CPU 使用率达到 100%

命令会持续输出字符串,占用 CPU 资源:yes > /dev/null & # 后台运行,占用 1 个 CPU 核心。stress --cpu $(nproc) --timeout 30s # 使用所有 CPU 核心,30 秒后自动停止。dd if=/dev/zero of=/dev/null bs=1M & # 后台运行,占用 CPU。(用于测试或压力测试),然后再停止这些进程,使 CPU 恢复正常。:pkill -f "while true" # 终止所有类似的循环。如果想手动停止,直接。

captain 1432

电脑CPU使用率占用100%怎么办 解决步骤指南

本文将探讨CPU使用率高的原因,并提供一系列解决步骤,帮助您降低CPU使用率,提升计算机性能。

weixin_56386428的博客 4910

linux服务器上cpu使用率总是100%解决方案

linux服务器上cpu使用率总是100%解决方案 背景: 老早之前就查看服务器上的cpu一直居高不下,总以为是有什么大的程序运行(确实是,只不过是挖矿的找到你的服务器,使用你的cpu进行挖矿),后来百度后才知道是有一种挖矿的病毒kdevtmpfsi。但后来由于项目重写了,个人项目由此被耽误了,所以暂时搁浅,今天抽空解决了下。仅仅是记录下这样的事情如何解决,顺便复习下linux的指令。...

陈陈陈亚萌_的博客 2027

cpu使用率_玩游戏cpu使用率100%怎么办

CPU又称中央处理器,是一台计算机的控制中心,有时候我们使用电脑玩游戏的时候可能会出现CPU使用率为100%的现象产生,CPU使用率长期保持在100%的情况下容易导致系统出现崩溃。下面小编为大家分享下碰到此种情况的解决办法,希望对大家有所帮助。玩游戏cpu使用率100%怎么办1、如果使用的是笔记本电脑的话,我们在玩游戏的时候尽量接上外接电源而不用笔记本电脑的电池来提供电力。当使用电池供电的时候,...

weixin_39926678的博客 6251

pipwire cpu 100%使用率的问题

在网上找到了社区的一篇bug反馈,可供参考https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4621 这里也阐述了该字符设备引起的cpu 100%的bug。后打印火焰图,也是epoll_wait,虽然打印热点函数也是epoll_wait,但看函数栈似乎看不出啥,毕竟不熟悉pipewire。列出所有监听的fd,其中只有fd=54的代表监听音频设备/dev/snd/seq。sy列很高,用strace跟踪下系统调用发现大量的epoll_wait。

bd7xzz 465
上一篇: FUSE简介
下一篇: TCP/IP拥塞控制总结...
废言Pro
博客等级 码龄16年 1092粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值