Load和CPU利用率

本文探讨了Linux系统中的Load平均值和CPU利用率。Load平均值反映的是过去1分钟、5分钟和15分钟内任务队列中进程的平均数量,而CPU利用率则不直接等同于负载。通过一个简单的Java程序示例,指出`/proc/loadavg`文件中第四项描述的不准确,它实际上是当前的线程数,而非仅限于CPU数量。对于CPU利用率,即使Load平均值达到7,4个超线程CPU内核并不意味着7/8的CPU占用,因为负载表示的是运行队列中的进程数,而CPU空闲时间可能被用于其他任务。
摘要由CSDN通过智能技术生成

首先,top命令是没有计算load的平均值的,top命令只不过是在不停的从/proc/loadavg文件来读取load的平均值.(strace显示top命令会打开/proc/loadavg并且会定期从中读取load的平均值信息).当使用man proc的时候,会有如下说明:

/proc/loadavg

该文件的前三个属性,分别表示在1分钟,5分钟和15分钟内,任务队列中进程的平均个数.

任务需保证:

  1. 进程状态是R
  2. 进程在等待磁盘IO,状态是D

这3个数字也可以通过一些其他的命令来获取,比如uptime等命令.而第四个属性包括两个数字,以/分开.第一个数字是当前内核调度实体的数量(进程,线程);这个数字会低于或者等于CPU的个数.而/后面的数字表示在当前系统中存在的内核调度实体个数.第5个属性则是操作系统最常创建进程的PID.

所以说,load average只是表示运行队列中运行任务的多少.并且,开发者从top中只能看到1分钟,5分钟和15分钟的平均值.如果开发者运行cat /proc/loadavg那么将会看到文件中的其它属性值.

前面描述的load average的描述是来自于man的,但是其实经过测试,貌似并非十分准确.我写了一个简单的java程序来创建256个线程,代码如下:

import java.lang.Thread;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值