7 proc.mem 中 memtype 参数的说明 监控项

概述

memtype 参数在 Linux、AIX、FreeBSD 和 Solaris 平台上受支持。

所有这些平台均支持 'memtype' 的三个常见值:pmemrssvsize。此外,某些平台还支持特定于平台的 'memtype' 值。

AIX

请参见下表中 AIX 系统上 'memtype' 参数支持的值。

支持的值 描述 procentry64 结构中的来源 尝试兼容的目标
vsize 脚注 虚拟 memory 大小 pi_size
pmem 实际内存使用百分比 pi_prm ps -o pmem
rss 常驻内存集大小 pi_trss + pi_drss ps -o rssize
size 进程大小(代码 + 数据) pi_dvm "ps gvw" SIZE 列
dsize 数据大小 pi_dsize
tsize 文本(代码)大小 pi_tsize "ps gvw" TSIZ 列
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 自身被统计到结果中,这可能并非您所期望的结果。

2。不要使用“ps -ef”来浏览进程——它仅显示非内核进程。请使用“ps -Af”来查看所有将被Zabbix agent看到的进程。

3。让我们通过“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'。为了匹配,你需要指定一个与此匹配的正则表达式 string 或者留空。

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

FreeBSD

请查看下表中 FreeBSD 中 'memtype' 参数支持的值。

支持的值 描述 来自 kinfo_proc 结构的源 尝试与以下命令兼容
vsize 虚拟 memory 大小 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 脚注 进程大小(代码 + 数据 + 堆栈) 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 脚注 虚拟memory大小 VmSize
pmem 实际内存使用百分比 (VmRSS/总内存) * 100
rss 常驻内存集大小 VmRSS
data 数据段大小 VmData
exe 代码段大小 VmExe
hwm 峰值常驻内存集大小 VmHWM
lck 锁定内存大小 VmLck
lib 共享库大小 VmLib
peak 峰值虚拟memory大小 VmPeak
pin 固定页面大小 VmPin
pte 页表项大小 VmPTE
size 进程代码 + 数据 + 堆栈段大小 VmExe + VmData + VmStk
stk 堆栈段大小 VmStk
swap 使用的交换空间大小 VmSwap

Linux注意事项:

  1. 较旧的Linux内核不支持所有“memtype”值。例如,Linux 2.4内核不支持hwmpinpeakpteswap这些值。
  2. 我们注意到使用proc.mem[...,...,...,...,data]对Zabbix agent主动检查进程进行自监控时,显示的值比agent的/proc/<pid>/status文件中VmData行报告的值大4 KB。在自测量期间,agent的数据段增加了4 KB,随后又恢复到先前大小。

Solaris

请参见下表中 Solaris 系统上 'memtype' 参数支持的值。

支持的值 描述 psinfo 结构中的来源 尝试兼容的命令
vsize 脚注 进程映像大小 pr_size ps -o vsz
pmem 实际内存使用百分比 pr_pctmem ps -o pmem
rss 常驻集大小
该值可能被低估 - 详见 "man ps" 中的 rss 描述。
pr_rssize ps -o rss
脚注

1 默认值。