7 proc.mem 监控项中内存参数类型

概述

AIX、FreeBSD 和 Solaris 平台都支持 memtype 参数。

'memtype' 参数的三个常用值:pmemrssvsize。另外,在一些系统中只支持该系统下的 'memtype' 值。

AIX

请参阅表中 AIX 上 'memtype' 参数支持的值。

支持值 说明 来源为 procentry64 结构 尽量兼容
vsize 1 虚拟内存大小 pi_size
pmem 实际内存百分比 pi_prm ps -o pmem
rss 常驻集大小 pi_trss + pi_drss ps -o rssize
size 进程大小(代码 + 数据) pi_dvm "ps gvw" SIZE column
dsize 数据大小 pi_dsize
tsize 文本(代码)大小 pi_tsize "ps gvw" TSIZ column
sdsize 共享库的数据大小 pi_sdsize
drss 数据常驻集大小 pi_drss
trss 文本常驻集大小 pi_trss

AIX平台注意事项:

  1. 在 AIX 上为 proc.mem[] 监控项选择参数时,尝试指定狭窄的流程选择标准。 否则,存在将不需要的进程计入 proc.mem[] 结果的风险。

例如:

$ zabbix_agentd -t proc.mem[,,,NonExistingProcess,rss]
       proc.mem[,,,NonExistingProcess,rss]           [u|2879488]

此示例展示了仅指定命令行(要匹配的正则表达式)参数如何导致 Zabbix agent 自记账 - 可能不是您想要的。

  1. 不要使用 "ps -ef" 浏览进程 - 它只显示非内核进程。使用 "ps -Af" 查看 Zabbix agent 将看到的所有进程。

  2. 让我们看一下 "topasrec" 进程示例,了解 Zabbix agent proc.mem[] 如何选择进程。

$ ps -Af | grep topasrec
       root 10747984        1   0   Mar 16      -  0:00 /usr/bin/topasrec  -L -s 300 -R 1 -r 6 -o /var/perf daily/ -ypersistent=1 -O type=bin -ystart_time=04:08:54,Mar16,2023

proc.mem[] 有参数:

proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]

第一个条件是进程名称(参数 <name>)。 在我们的示例中,Zabbix agent 会将其视为 "topasrec"。为了匹配,您需要指定 "topasrec" 或将其留空。第二个条件是用户名(参数 <user>)。 要匹配,您需要指定 "root" 或将其留空。进程选择中使用的第三个标准是参数 <cmdline>。 Zabbix agent 将其值视为 '/usr/bin/topasrec -L -s 300 -R 1 -r 6 -o /var/perf/daily/ -ypersistent=1 -O type=bin -ystart_time=04:08:54,Mar16,2023'。要匹配,您需要指定与该字符串匹配的正则表达式或将其留空。

参数 <mode> 和 <memtype> 在使用上述三个条件后被应用。

FreeBSD

请参见表中 FreeBSD 上的 "memtype" 参数支持的值。

支持值 说明 来源为 kinfo_proc 结构 尽量兼容
vsize 虚拟内存大小 kp_eproc.e_vm.vm_map.size 或 ki_size ps -o vsz
pmem 实际内存的百分比 从 rss 计算得来 ps -o pmem
rss 驻留集大小 kp_eproc.e_vm.vm_rssize 或 ki_rssize ps -o rss
size 1 进程大小(代码+数据+堆栈) tsize + dsize + ssize
tsize 文字(代码)大小 kp_eproc.e_vm.vm_tsize 或 ki_tsize ps -o tsiz
dsize 数据大小 kp_eproc.e_vm.vm_dsize 或 ki_dsize ps -o dsiz
ssize 堆栈大小 kp_eproc.e_vm.vm_ssize 或 ki_ssize ps -o ssiz

Linux

请参见表中Linux上的 'memtype' 参数支持的值。

支持值 说明 来源为 /proc/<pid>/status 文件
vsize 1 虚拟内存大小 VmSize
pmem 实际内存百分比 (VmRSS/total_memory) * 100
rss 驻留内存大小 VmRSS
data 数据段大小 VmData
exe 代码段大小 VmExe
hwm 驻留集峰值大小 VmHWM
lck 锁定内存大小 VmLck
lib 共享库的大小 VmLib
peak 峰值虚拟内存大小 VmPeak
pin 固定页面的大小 VmPin
pte 页表条目的大小 VmPTE
size 进程代码 + 数据 + 堆栈段的大小 VmExe + VmData + VmStk
stk 堆栈段大小 VmStk
swap 使用的交换空间大小 VmSwap

Linux上注意事项:

  1. 一些旧版本Linux 内核并不是支持所有 'memtype' 值 ,例如 Linux 2.4 内核就不支持 hwmpinpeakpteswap 值。
  2. 我们发现 Zabbix agent 主动检查进程参数 proc.mem[...,...,...,...,data] 显示的值比 agent 的 /proc/<pid>/status 文件 VmData 行的值大4kB。 在agent自我监控管理时,agent的数据碎片增长率4 kB ,然后又返回到先前的值。

Solaris

请参见表中的Solaris上的 'memtype' 参数所支持的值。

支持值 说明 来源为 psinfo 结构 尽量兼容
vsize 1 进程镜像的大小 pr_size ps -o vsz
pmem 实际内存的百分比 pr_pctmem ps -o pmem
rss 驻留集大小
可能被低估了 - 请参阅“man ps”中的 rss 描述。.
pr_rssize ps -o rss
脚注

1 默认值.