美文网首页
CPU利用率

CPU利用率

作者: linbj | 来源:发表于2019-03-30 10:56 被阅读0次

CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。现代分时多任务操作系统对 CPU 都是分时间片使用的:比如A进程占用10ms,然后B进程占用30ms,然后空闲60ms,再又是A进程占10ms,B进程占30ms,空闲60ms;如果在一段时间内都是如此,那么这段时间内的占用率为40%。CPU对线程的响应并不是连续的,通常会在一段时间后自动中断线程。未响应的线程增加,就会不断加大CPU的占用。cpu使用率高的原因有很多,但是一般都是由于病毒木马或开机启动项过多所致。高CPU使用率也可能表明应用程序的调整或设计不良。优化应用程序可以降低CPU的使用率。

在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间 **/ **CPU总的执行时间。

在Linux系统中,CPU时间的分配信息保存在/proc/stat文件中,利用率的计算应该从这个文件中获取数据。文件的头几行记录了每个CPU的用户态,系统态,空闲态等状态下分配的时间片(单位是Jiffies),这些数据是从CPU加电到当前的累计值。常用的监控软件就是利用/proc/stat里面的这些数据来计算CPU的利用率的。

不同版本的linux /proc/stat文件内容不一样,以Linux 2.6来说,/proc/stat文件的内容如下:

cpu 2032004 102648 238344 167130733 758440 15159 17878 0

cpu0 1022597 63462 141826 83528451 366530 9362 15386 0

cpu1 1009407 39185 96518 83602282 391909 5796 2492 0

intr 303194010 212852371 3 0 0 11 0 0 2 1 1 0 0 3 0 11097365 0 72615114 6628960 0 179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ctxt 236095529

btime 1195210746

processes 401389

procs_running 1

procs_blocked 0

第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:

| **参数** | **解析(单位:jiffies)** |
| user (2032004) | 从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。 |
| nice (102648) | 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间 |
| system (238344) | 从系统启动开始累计到当前时刻,核心时间 |
| idle (167130733) | 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间 |
| iowait (758440) | 从系统启动开始累计到当前时刻,硬盘IO等待时间 |
| irq (15159) | 从系统启动开始累计到当前时刻,硬中断时间 |
| softirq (17878) | 从系统启动开始累计到当前时刻,软中断时间 |

因为/proc/stat中的数值都是从系统启动开始累计到当前时刻的积累值,所以需要在不同时间点t1和t2取值进行比较运算,当两个时间点的间隔较短时,就可以把这个计算结果看作是CPU的即时利用率。

CPU的即时利用率的计算公式:

CPU在t1到t2时间段总的使用时间 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1)

CPU在t1到t2时间段空闲使用时间 = (idle2 - idle1)

CPU在t1到t2时间段即时利用率 =  1 - CPU空闲使用时间 / CPU总的使用时间

(2)内存利用率

计算内存利用率需要从/proc/meminfo文件中取相应数据,文件内容如下:

MemTotal:      1024008 kB

MemFree:         18448 kB

Buffers:         12664 kB

Cached:         282500 kB

SwapCached:        716 kB

Active:         816124 kB

Inactive:        52516 kB

HighTotal:      122500 kB

HighFree:          304 kB

… …

MemTotal数值表示内存总量,MemFree数值表示空余数量。

所以内存的即时利用率计算公式

(MemTotal - MemFree)/ MemTotal

计算cpu利用率和内存利用率

CPU使用率

相关文章

  • CPU利用率和Load Average

    CPU利用率和Load Average的区别 CPU利用率:CPU利用率在过去常常被我们这些外行认为是判断机器是否...

  • 为什么磁盘慢会导致Linux负载飙升?

    一、CPU利用率和负载率的区别 为什么磁盘慢会导致Linux负载飙升? 这里要区别CPU负载和CPU利用率,它们是...

  • 性能指标

    CPU CPU资源利用率很高的话,需要看CPU消耗User、Sys、Wait哪种状态。 如果CPU User非常高...

  • Linux如何统计进程的CPU利用率[转]

    希望在脚本中,能够以过”非阻塞”的方式获取进程cpu利用率 * ps无法获得进程当前时刻的CPU利用率;top则需...

  • CPU利用率

    CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明你的机...

  • cpu利用率

    APP_CPU使用率[https://www.cnblogs.com/yomia/p/15499031.html]...

  • 操作系统学习(三) —— CPU调度

    第三部分 CPU调度 一、相关基本概念 引入多程序设计,目的是提高计算机资源利用率,尤其是CPU利用率(CPU u...

  • 进程与线程

    注意: 多线程可以提高CPU利用率,不能提高内存利用率 进程 wait()、notify()和notifyAll(...

  • Linux性能记录

    说到一台Linux服务器的性能,大部分人关注的指标如下:CPU利用率,CPU LOAD,内存利用率,磁盘I/O等待...

  • 性能测试常用命令小解

    性能监控监控服务端的指标:整体系统CPU利用率(CPU利用率大于50%,需要注意;大于70%,需要密切关注;高于9...

网友评论

      本文标题:CPU利用率

      本文链接:https://www.haomeiwen.com/subject/imljbqtx.html