centos7 内存使用率计算_Linux CPU、内存、磁盘、使用率计算

Linux CPU、内存、磁盘、使用率计算

原创作品,转载请标明出处。

命令方式查看:

cpu使用率:

如果发现多个进程cpu使用率加起来高于100%,或者单个进程(可能开多个线程导致)使用率高于100%,说明该top工具版本比较旧,使用单核cpu方式计算的使用率。

解决办法:

更新top工具或者使用其他工具(经测试busybox-1.29.3中的top命令是准确的)。

手动计算,用 使用率 除以 cpu核数 = 真实的cpu使用率。

[root@agent ~]# top

1548244028619.png

memory使用率:

计算方式:used / total * 100% = 内存使用率

[root@agent ~]# free

1548244619967.png

disk使用率:

[root@agent ~]# df

1548244755982.png

解析proc文件获取:

cpu使用率:

proc文件:/proc/stat

字段解释:只看行首以cpu开头的行,每列字段含义为:

name 设备名

user 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。

nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。

system 从系统启动开始累计到当前时刻,处于核心态的运行时间。

idle 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间。

iowait 从系统启动开始累计到当前时刻,IO等待时间。

irq 从系统启动开始累计到当前时刻,硬中断时间。

softirq 从系统启动开始累计到当前时刻,软中断时间。

stealstolen 从系统启动开始累积到当前时刻,在虚拟环境运行时花费在其他操作系统的时间。

guest 从系统启动开始累积到当前时刻,在Linux内核控制下的操作系统虚拟cpu花费的时间。

guest_nice 从系统启动开始累积到当前时刻,在Linux内核控制下的操作系统虚拟cpu花费在nice进程上的时间。

cpu每核时间:

第一行name为cpu,描述的是总的cpu时间分配。

cpu[0 1 2 3 ...],指的是cpu单核的时间分配。

单位:jiffies

jiffies 是内核中的一个全局变量,用来记录系统启动以来产生的节拍数,在 Linux 中,一个节拍大致可以理解为操作系统进程调度的最小时间片,不同的 Linux 系统内核这个值可能不同,通常在 1ms 到 10ms 之间。

计算方式:

cpu总时间 = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest + guest_nice

cpu使用率计算

请在一段时间内(推荐:必须大于0s,小于等于1s),获取两次cpu时间分配信息。

计算两次的cpu总时间:total_2 - total_1

计算两次的cpu剩余时间:idle_2 - idle_1

计算两次的cpu使用时间:used = (total_2 - total_1) - (idle_2 - idle_1)

cpu使用率 = 使用时间 / 总时间 * 100% = used / total * 100%

[root@agent ~]# cat /proc/stat

1548244985880.png

memory使用率

proc文件:/proc/meminfo

字段解释:

MemTotal 可用的总内存--总物理内存减去kernel 代码/数据段占用再减去保留的内存区,mem_init_print_info里面有具体计算方式。

MemFree 完全未用到的物理内存 LowFree + HighFree。

MemAvailable MemFree+Active(file)+Inactive(file) - (watermark+min(watermark,Active(file)+Inactive(file)/2)) file占用的内存是可以释放的,但是释放的过多,会导致swap发生。

Buffers block device 文件读写用到的page 。

Cached 普通文件占用的缓冲,所有缓冲页(page cache)的总和,包括:

cached+buffer+swap cache swap cache中包含的是被确定要swapping换页、但是尚未写入物理交换区的匿名内存页(匿名指的是未关联任何具体文件)

SwapCached 内存足够的情况下,这个值一般为0,那些匿名内存页,比如用户进程通过malloc()申请的内存页是没有关联任何文件的(有别于backing storage基于磁盘文件的内存页),如果发生swapping换页,这类内存页会被写入交换区。从一个匿名内存页被确定要被换页开始,它就被计入了swap cache,但是不一定会被立刻写入物理交换区,因为Linux的原则是除非绝对必要,尽量避免I/O。所以swap cache中包含的是被确定要swapping换页、但是尚未写入物理交换区的匿名内存页。

Active (pages[LRU_ACTIVE_ANON] + pages[LRU_ACTIVE_FILE]),ACTIVE_ANON和ACTIVE_FILE,分别表示anonymous pages和mapped pages。用户进程的内存页分为两种:与文件关联的内存(比如程序文件、数据文件所对应的内存页)和与文件无关的内存(比如进程的堆栈,用malloc申请的内存),前者称为file pages或mapped pages,后者称为anonymous pages。

Inactive pages[LRU_INACTIVE_ANON] + pages[LRU_INACTIVE_FILE],这部分具体可以参考LRU 内存管理算法。

SwapTotal 可用的swap空间的总的大小。

SwapFree 剩余swap空间的大小。

Dirty 需要写入磁盘的内存区大小。

Writeback 正在被写回磁盘的大小。

AnonPages 未映射页的内存大小。

Mapped 设备和文件等映射的大小。

Slab 内核数据结构slab的大小,可以减少申请和释放内存带来的消耗。

其他字段请自行百度参考。

计算方式

内存使用率 = (MemTotal - MemAvailable) / MemTotal * 100%

[root@agent ~]# cat /proc/meminfo

1548246581741.png

disk使用率

目前没有最准确的方式(没有精力去百度翻资料)来获取,后续补上。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值