文章目录

二、Memory(含Swap)
Memory 资源监控的KEY包含:

KEY 说明
vm.memory.size[] 内存大小
system.swap.size[,] 交换分区空间大小
system.swap.in[,] 交换分区(从设备到内存)统计数据,返回整数
system.swap.out[,] 交换分区(从内存到设备)的统计数据,返回整数

从源码分析,vm.memory.size[]、system.swap.size[,]数据主要来自系统函数 sysinfo ,少量来自/proc/meminfo,主要部分数据在 struct sysinfo 中没有定义有关,比如 cached。
Linux 内核源码: \include\linux\kernel.h
\include\linux\kernel.h

vm.memory.size[]:
参数可以选:不填写、total、free、buffers、cached、used、pused、available、pavailable、shared,不填写==total。
参数含义为:内存总空间大小、内存空闲空间(不含buffers 、cached)大小、内存buffers大小、内存cached大小、内存已使用空间大小、内存已使用空间百分比、内存可利用空间(含buffers 、cached)大小,内存可利用空间百分比、共享内存空间大小。其中shared 仅限于2.4版内核。
buffers、cached 内存空间是比较有特色的部分,linux 源码 \Documentation\filesystems\proc.txt 有相关解释:
Buffers: Relatively temporary storage for raw disk blocks shouldn’t get tremendously large (20MB or so)
Cached: in-memory cache for files read from the disk (the pagecache). Doesn’t include SwapCached
Linux将暂时不使用的内存作为文件和数据缓存,以提高系统性能,当需要这些内存时,系统会自动释放。

system.swap.size[,] :
第一个参数没有多大实际作用,只能为不填写或填写all,两者含义一样。
第二个参数来自 sysinfo,分别为free、total、used、pfree、pused。分别为swap的空闲空间大小、总空间大小、已使用空间大小、空闲空间百分比、已使用空间百分比。
\libs\zbxsysinfo\linux\memory.c

system.swap.in[,]、system.swap.out[,] 较为复杂,根据内核不同,来源不同,2.4 来自/proc/partitions、/proc/stat,其他来自/proc/diskstats、/proc/vmstat。
Zabbix 源码\libs\zbxsysinfo\linux\swap.c
\libs\zbxsysinfo\linux\swap.c
\libs\zbxsysinfo\linux\swap.c
当type 参数为空或pages 时(两个含义相同),device参数无效,返回的是 从/proc/vmstat (已内核版本2.6.32为例)获取到的 pswpin、pswpout 值。
pswpin #从启动到现在读入的交换分区页数
pswpout #从启动到现在换出的交换分区页数

当type 参数为 sectors、count时,device需要填写 swap 对应的分区,通过 cat /proc/swaps 可查到。
 cat /proc/swaps
system.swap.in[/dev/sda2,sectors] 返回 /proc/diskstats对应分区第3列数据
system.swap.in[/dev/sda2,count] 返回 /proc/diskstats对应分区第1列数据
system.swap.out[/dev/sda2,sectors] 返回 /proc/diskstats对应分区第7列数据
system.swap.out[/dev/sda2,count] 返回 /proc/diskstats对应分区第5列数据
 cat /proc/diskstats

文章目录