CPU负载与CPU利用率之区别

分享
程序员 2024-9-12 08:46:49 121 0 来自 中国
1、简介
存储、内存和 CPU(中心处理惩罚器)等体系资源不足会极大地影相应用步调的性能。因此,监控这些组件至关告急。
与磁盘和内存差异,监控 Linux 体系上的 CPU 利用率并不那么简朴。在本文中,我们将相识怎样表明 CPU 指标并以人类可读的格式表现它们。

  • CPU 负载与 CPU 利用率
    只管 CPU 负载和 CPU 利用率听起来很相似,但它们是不可互换的。CPU 负载定义为在单个时间点利用或等候利用一个内核的历程数。
假设我们有一个单核体系,我们的 CPU 匀称负载始终低于 0.6。这表明每个须要利用 CPU 的历程都可以立即利用它,而无需等候。假如 CPU 匀称负载大于 1,则体现有历程须要利用 CPU,但由于 CPU 不可用,现在无法利用。
但是,多处理惩罚器体系中高于 1 的匀称负载不会成为标题,由于有更多内核可用。
uptime下令为我们提供了以 1、5 和 15 分钟为隔断的匀称负载视图:
[root@localhost ~]# uptime 12:40:05 up  2:29,  1 user,  load average: 0.37, 0.08, 0.03假如不知道体系的焦点数,就无法表明匀称负载:
# cat /proc/cpuinfo |grep corecore id        : 0cpu cores    : 1# cat /proc/cpuinfo |grep corecore id     : 0cpu cores   : 2core id     : 0cpu cores   : 2core id     : 1cpu cores   : 2core id     : 1cpu cores   : 2另一方面,CPU 利用率是 CPU 处理惩罚非空闲使命所耗费的时间百分比。CPU 利用率只能在指定的时间隔断内丈量。我们可以通过将空闲时间的百分比从 100 中减去来确定 CPU 利用率。
3.盘算CPU利用率
3.1 利用vmstat获取 CPU 利用率
vmstat下令近乎实时地表现 CPU 运动:
# vmstat 3 4procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 4  0      0 1347080   6120 941464    0    0    68    11   72  137  1  2 97  0  0 1  0      0 1347080   6120 941464    0    0     0     0   84  157  1  2 97  0  0 1  0      0 1347080   6120 941464    0    0     0     0   59  107  1  1 98  0  0 1  0      0 1347080   6120 941464    0    0     0     1   59  104  1  1 98  0  0CPU 下的列提供了处理惩罚器时间耗费在哪里的概览:
us –运行非内核代码所耗费的时间
sy -运行内核代码所耗费的时间
id –空闲时间
wa –等候 I/O 所耗费的时间
st -从假造机中偷取时间
id列是我们感爱好的。耽误一秒,我们利用 vmstat 盘算CPU利用率:
[root@localhost ~]# echo "CPU Usage: "$[100-$(vmstat 1 2|tail -1|awk '{print $15}')]"%"CPU Usage: 2%没有提供任何参数的vmstat下令将给出自引导以来的 CPU 时间。这不会提供精确的 CPU 利用百分比。因此,参数只能是 1 和 2,我们接纳一秒钟后盘算的指标:
# vmstat 1 2procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0      0 299948 439704 2817632    0    0    24    80    0    1  3  1 96  0  0 0  0      0 299388 439716 2817624    0    0    52     0 12639 24736  1  1 98  0  03.2. 利用/proc/stat获取 CPU 利用率
CPU 运动也可以从/proc/stat文件中提取。该文件包罗自启动以来有关体系的各种指标:
#cat /proc/stat cpu  65367628 953 22932463 2375856549 2197237 0 1946432 0 0 0cpu0 17476419 247 6017418 592188525 448421 0 551235 0 0 0cpu1 15205823 274 5377711 595458052 609782 0 460967 0 0 0cpu2 17714818 235 6120189 592488511 582748 0 487777 0 0 0cpu3 14970567 195 5417144 595721459 556284 0 446450 0 0 0intr 19254483325 128 9 0 0 524 0 3 0 146 0 0 21 15 0 0 0 0 0 0 0 0 0 0 0 0 27 0 63657576 2 241449792 165587438 238303338 155312300 253683406 161946028 268992893 187313418 0 7268232 0 18751463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ctxt 173337668793btime 1648457167processes 57320268procs_running 2procs_blocked 0softirq 12000130905 1 1247219541 0 1075777327 82816139 0 5752561 2548585639 372991 2744639410第一行,  'cpu'  是体系全部焦点指标的聚合。在具有 4 个内核的体系上,将有 4条cpu线——cpu0、cpu1、cpu2和cpu3。' cpu ' 行中的列体现处理惩罚差异使命所耗费的时间:
user – 在用户模式下耗费的时间
nice – 在用户模式下处理惩罚 nice 历程所耗费的时间
system – 实验内核代码所耗费的时间
idle - 空闲时间
iowait – 等候 I/O 所耗费的时间
irq - 服务制止所耗费的时间
softirq – 服务软件制止所耗费的时间
steal —从假造机中偷取的时间
guest - 为来宾操纵体系运行假造 CPU 所耗费的时间
guest_nice – 为“不错的”客户操纵体系运行假造 CPU 所耗费的时间
我们将利用这些指标来盘算匀称空闲百分比。随后,我们将利用盘算值来盘算 CPU 利用率。须要留意的是,较旧的 Linux 发行版不盘算偷取、来宾或来宾_nice指标。假如我们利用的是旧体系,我们会在盘算中忽略这些指标:
匀称空闲时间 (%) = (idle * 100) / (user + nice + system + idle + iowait + irq + softirq +steal + guest + guest_nice)cat /proc/stat |grep cpu |tail -1|awk '{print ($5*100)/($2+$3+$4+$5+$6+$7+$8+$9+$10)}'|awk '{print "CPU Usage: " 100-$1}'CPU Usage: 2.4219由于我们正在开发单核体系,因此“cpu”行将与“cpu1 ”类似。因此,tail -1 的利用是 只检索此中一行。然而,我们会在多处理惩罚器体系上利用“ cpu ”行,由于它是全部内核上的指标的聚集。
3.3. 利用top获取 CPU 利用率
通常,top下令通常用于表现体系上的运动历程以及这些历程斲丧了多少资源。不外,我们可以利用这个下令来丈量 CPU 的状态:
# toptop - 07:08:31 up  2:41,  1 user,  load average: 0.00, 0.00, 0.00Tasks: 322 total,   2 running, 320 sleeping,   0 stopped,   0 zombie%Cpu(s): 10.0 us, 15.0 sy,  0.0 ni, 97.8 id,  0.0 wa,  5.0 hi,  0.0 si,  0.0 stMiB Mem :   3709.4 total,   1483.1 free,   1402.0 used,    824.4 buff/cacheMiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2053.4 avail Mem -n选项是top下令在竣事前应该利用的迭代次数。我们制止利用第一个循环,由于我们检索的指标将是自启动以来的值。因此,我们举行了第二次迭代。
大概,在多处理惩罚器体系中,我们必须将给定的“ id”值除以内核数,然后从 100 中减去该值。比方,假如我们在四核体系上运行,而且“ id ”值为 304%,我们将 CPU 利用率盘算为:
CPU 利用率 % = 100 – (304/4)[root@localhost ~]# top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'|awk '{print "CPU Usage: " 100-($8/4) "%"}'4.结论
在本文中,我们讨论了 CPU 利用率和 CPU 负载之间的区别。很多人瓜代利用这两个概念,这是不精确的。之后,我们深入研究了用于检索 CPU 利用率指标的各种方法。
原文:https://www.baeldung.com/linux/get-cpu-usage
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-23 13:36, Processed in 0.160487 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表