当前位置: 首页 > 科技观察

CPU负载与CPU使用率不是一回事_0

时间:2023-03-13 22:26:01 科技观察

1。简介存储、内存和CPU(中央处理器)等系统资源不足会极大地影响应用程序性能。因此,监控这些组件至关重要。与磁盘和内存不同,监视Linux系统上的CPU使用情况并不那么简单。在本文中,我们将了解如何解释CPU指标并以人类可读的格式显示它们。2.CPU负载和CPU使用尽管CPU负载和CPU使用听起来很相似,但它们不能互换。CPU负载定义为在单个时间点使用或等待使用内核的进程数。假设我们有一个单核系统,我们的CPU平均负载始终低于0.6。这意味着每个需要使用CPU的进程都可以立即使用,无需等待。如果CPUloadaverage大于1,说明有进程需要使用CPU,但是目前由于CPU不可用而无法使用。但是,在多处理器系统中,平均负载高于1不是问题,因为有更多内核可用。uptime命令让我们以1、5和15分钟为间隔查看平均负载:[??root@localhost~]#uptime12:40:05up2:29,1user,loadaverage:0.37,0.08,0.03如果不知道系统中的核心数,则无法解释平均负载:[root@localhost~]#cat/proc/cpuinfo|grepcorecoreid:0cpucores:1另一方面,CPU使用率是多少CPU花费处理非空闲任务的时间百分比。只能在指定的时间间隔内测量CPU使用率。我们可以通过从100中减去空闲时间的百分比来确定CPU使用率。3.计算CPU使用率3.1。使用vmstat获取CPU使用率vmstat命令近乎实时地显示CPU活动:[root@localhost~]#vmstat34procs----------memory------------swap-------io-----system-------cpu-----rbswpdfreebuffcachesisobiboincsussyIDWAST40013470806120941464068117213719700000134708064146400008415712970013470809414640000000059107111198000000000000001347080612061209412094120941414440000000000000000000000000000059000000000000000005900059000000000000000000000005910400000000000590000590000559104119800CPU下的列概述了处理器时间花费在何处:us–运行非内核代码所花费的时间sy–运行内核代码所花费的时间id-空闲时间wa-等待I/O所花费的时间st-TimeStealingFromVMid列是我们感兴趣的,延迟一秒,我们使用vmstat计算CPU使用率:[root@localhost~]#echo"CPUUsage:"$[100-$(vmstat12|tail-1|awk'{print$15}')]"%"CPU使用率:2%不带任何参数的vmstat命令将提供自引导以来的CPU时间。这不会提供准确的CPU使用百分比。所以参数只能是1和2,我们用一秒后计算出来的指标:vmstat123.2,使用/proc/stat获取CPU使用率CPU活动也可以从/proc/stat文件中提取。此文件包含自引导以来有关系统的各种指标:[root@localhost~]#cat/proc/statcpu3020281863224043543247000cpu03020281863224043543247000intr9646828100000000100012630003696015392800000000000000000000000000000000000000207041146000000000000000034397000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ctxt340950btime1628404433processes3276procs_Running21procs_18blockirq76118blockirq7651002610094913第一行,'cpu'是系统所有核心指标的聚合在具有4个核心的系统上,将有4个cpu线-cpu0、cpu1、cpu2和cpu3。“cpu”行中的列表示处理不同任务所花费的时间:user-用户模式下花费的时间nice-用户模式系统中处理nice进程所花费的时间-执行内核代码所花费的时间idle-空闲时间iowait-等待I/Oirq-服务中断所花费的时间softirq-服务软件中断所花费的时间窃取-从虚拟机窃取的时间guest-为来宾操作系统运行虚拟CPU所花费的时间guest_nice–为“nice”来宾操作系统运行虚拟CPU所花费的时间我们将使用这些指标来计算平均闲置百分比。然后我们将使用计算值来计算CPU使用率。请务必注意,较旧的Linux发行版不计算steal、guest或guest_nice指标。如果我们使用旧系统,我们将在计算中忽略这些指标:平均空闲时间(%)=(idle*100)/(user+nice+system+idle+iowait+irq+softirq+steal+guest+guest_nice)cat/proc/stat|grepcpu|tail-1|awk'{print($5*100)/($2+$3+$4+$5+$6+$7+$8+$9+$10)}'|awk'{print"CPUUsage:"100-$1}'CPUUsage:2.4219因为我们开发的是单核系统,所以"cpu"这一行会和"cpu1"一样。因此,tail-1的使用是只检索其中的一行。但是,我们将在多处理器系统上使用“cpu”行,因为它是所有内核指标的集合。3.3.使用top获取CPU使用率一般情况下,top命令通常用于显示系统上活跃的进程以及这些进程消耗了多少资源。但是,我们可以使用此命令来测量CPU状态:[root@localhost~]#toptop-07:08:31up2:41,1user,loadaverage:0.00,0.00,0.00Tasks:322total,2running,320睡眠,0停止,0僵尸%Cpu(s):10.0us,15.0sy,0.0ni,97.8id,0.0wa,5.0hi,0.0si,0.0stMiBMem:3709.4total,1483.1free,1402.04usbuff/cacheMiBSwap:总计2048.0,免费2048.0,已使用0.0。2053.4availMem另外请注意,top命令显示各个内核的CPU百分比。在多处理器系统上,CPU百分比可能超过100%。例如,如果4个内核处于75%,则top命令将显示CPU处于300%。我们需要获取空闲时间的值,以便我们可以从100中减去它来获取使用情况:[root@localhost~]#top-bn2|grep'%Cpu'|尾-1|grep-P'(....|...)id,'|awk'{print"CPUUsage:"100-$8"%"}'CPUUsage:2.2%-n选项是迭代次数top命令应该在结束之前使用。我们避免使用第一个循环,因为我们检索的指标将是自启动以来的值。所以我们进行了第二次迭代。或者,在多处理器系统中,我们必须将给定的“id”值除以核心数,然后从100中减去该值。例如,如果我们在四核系统上运行并且“id”值为304%,我们计算CPU使用率:CPU使用率%=100–(304/4)[root@localhost~]#top-bn2|grep'%Cpu'|尾-1|grep-P'(....|...)id,'|awk'{print"CPUUsage:"100-($8/4)"%"}'4.结论在本文中,我们讨论了差异CPU使用率和CPU负载之间。许多人互换使用这两个概念,这是不正确的。之后,我们深入研究了检索CPU利用率指标的各种方法。