千家信息网

Linux中计算特定CPU使用率的方法

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍了Linux中计算特定CPU使用率的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Linux中计算特定CPU使用率的方
千家信息网最后更新 2025年12月01日Linux中计算特定CPU使用率的方法

这篇文章主要介绍了Linux中计算特定CPU使用率的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

Linux中计算特定CPU使用率的方法:首先从【/proc/stat】中获取 t1时刻系统总体的值;然后从【/proc/stat】中获取t2时刻系统总的值;最后计算t2与t1之间系统总的CPU使用情况。

Linux中计算特定CPU使用率的方法:

1. 背景知识

在/proc/stat中可以查看每一个CPU的使用情况的,如下图:

其中cpu(0/1/2/…)后面的那十个数字含义如下:

/proc/statkernel/system statistics.  Varies with architecture.  Common entries include:     user nice system idle iowait  irq  softirq steal guest guest_nicecpu  4705 356  584    3699   23    23     0       0     0        0cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0   The amount of time, measured in units of USER_HZ   (1/100ths of a second on most architectures, use   sysconf(_SC_CLK_TCK) to obtain the right value), that   the system ("cpu" line) or the specific CPU ("cpuN"   line) spent in various states:   user   (1) Time spent in user mode.   nice   (2) Time spent in user mode with low priority          (nice).   system (3) Time spent in system mode.   idle   (4) Time spent in the idle task.  This value          should be USER_HZ times the second entry in the          /proc/uptime pseudo-file.   iowait (since Linux 2.5.41)          (5) Time waiting for I/O to complete.  This          value is not reliable, for the following rea‐          sons:          1. The CPU will not wait for I/O to complete;             iowait is the time that a task is waiting for             I/O to complete.  When a CPU goes into idle             state for outstanding task I/O, another task             will be scheduled on this CPU.          2. On a multi-core CPU, the task waiting for I/O             to complete is not running on any CPU, so the             iowait of each CPU is difficult to calculate.          3. The value in this field may decrease in cer‐             tain conditions.   irq (since Linux 2.6.0-test4)          (6) Time servicing interrupts.   softirq (since Linux 2.6.0-test4)          (7) Time servicing softirqs.   steal (since Linux 2.6.11)          (8) Stolen time, which is the time spent in          other operating systems when running in a virtu‐          alized environment   guest (since Linux 2.6.24)          (9) Time spent running a virtual CPU for guest          operating systems under the control of the Linux          kernel.   guest_nice (since Linux 2.6.33)          (10) Time spent running a niced guest (virtual          CPU for guest operating systems under the con‐          trol of the Linux kernel).

2.计算具体CPU使用率

有了上面的背景知识,接下来我们就可以计算具体CPU的使用情况了。具体计算方式如下:

Total CPU time since boot = user+nice+system+idle+iowait+irq+softirq+stealTotal CPU Idle time since boot = idle + iowaitTotal CPU usage time since boot = Total CPU time since boot - Total CPU Idle time since bootTotal CPU percentage = Total CPU usage time since boot/Total CPU time since boot * 100%

有了上面的计算公式,计算某一CPU使用率或者系统总的CPU占用率也就是不难了。

示例:计算系统整体CPU占用情况

首先从/proc/stat中获取 t1时刻系统总体的user、nice、system、idle、iowait、irq、softirq、steal、guest、guest_nice的值,得到此时Total CPU time since boot(记为total1)和 Total CPU idle time since boot(记为idle1)。

其次,从/proc/stat中获取t2时刻系统总的Total CPU time since boot(记为total2)和Total CPU idle time since boot(记为idle2)。(方法同上一步)

最后,计算t2与t1之间系统总的CPU使用情况。也就是:

CPU percentage between t1 and t2 = ((total2-total1)-(idle2-idle1))/(total2-total1)* 100%

其中, ((total2-total1)-(idle2-idle1))实际上就是t1与t2时刻之间系统CPU被占用的时间(总时间 - 空闲时间)。

下面是一段计算时间段内CPU被占用情况的脚本:

#!/bin/bash# by Paul Colby (http://colby.id.au), no rights reserved ;)PREV_TOTAL=0PREV_IDLE=0while true; do  # Get the total CPU statistics, discarding the 'cpu ' prefix.  CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)  IDLE=${CPU[3]} # Just the idle CPU time.  # Calculate the total CPU time.  TOTAL=0  for VALUE in "${CPU[@]}"; do    let "TOTAL=$TOTAL+$VALUE"  done  # Calculate the CPU usage since we last checked.  let "DIFF_IDLE=$IDLE-$PREV_IDLE"  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"  let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"  echo -en "\rCPU: $DIFF_USAGE%  \b\b"  # Remember the total and idle CPU times for the next check.  PREV_TOTAL="$TOTAL"  PREV_IDLE="$IDLE"  # Wait before checking again.  sleep 1done

感谢你能够认真阅读完这篇文章,希望小编分享Linux中计算特定CPU使用率的方法内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

系统 使用率 方法 情况 时刻 时间 之间 篇文章 也就是 总体 知识 背景 面的 接下来 价值 公式 内容 十个数字 同时 含义 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务哪家好软件开发 网络安全和云计算公司 数据库查询全体男生的数据 旺苍县网络安全事故应急预案 软件开发及实现论文题目 网络安全漏洞整改总结 网络安全面临的主要攻击是 长沙学习软件开发公司有哪些 浙江智慧工地管理平台软件开发 plm数据库用户sa密码 网络安全的重中之重 陕西软件开发补贴 视易ktv点歌系统服务器更新 失落的方舟俄服服务器选哪个 服务器不用显示器怎么管理 model数据库可以被删除吗 如何判断数据源数据库类型 常见数据库报错 国家医用耗材分类与代码数据库动态维护操作 软件开发的应用领域 存储服务器数据安全分析 大连租房网络安全 博信数据库密码 江西南昌新华互联网科技学院 量化交易软件开发 数据库中的表格工具在哪里 排行榜的数据库设计 华大九天校招软件开发 服务器的安全证书有问题 我的世界里怎么弄服务器
0