9 proc.mem 监控项中 memtype 参数的使用说明

概述

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

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

AIX

查看AIX系统中'memtype'参数支持的值如下表所示.

支持的值 描述 在procentry64结构中的来源 尝试兼容的对象
vsize 1 虚拟memory大小 pi_size
pmem 实际memory的百分比 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自身进程被计入统计——这通常不是您期望的结果。

  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'。要匹配成功,您需要指定一个匹配此string的正则表达式或将其留空。

参数<mode>和<memtype>会在应用上述三个筛选条件后生效。

FreeBSD

查看FreeBSD上'memtype'参数支持的值,请参考下表。

支持的值 描述 kinfo_proc结构中的来源 尝试兼容的目标
vsize 虚拟memory大小 kp_eproc.e_vm.vm_map.size 或 ki_size ps -o vsz
pmem 实际memory百分比 根据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 中的来源 file
vsize 1 虚拟 memory 大小 VmSize
pmem 实际内存使用百分比 memory (VmRSS/总内存) * 100
rss 驻留集大小 VmRSS
data 数据段大小 VmData
exe 代码段大小 VmExe
hwm 峰值常驻内存集大小 VmHWM
lck 锁定的memory大小 VmLck
lib 共享库大小 VmLib
peak 峰值虚拟 memory 大小 VmPeak
pin 固定页面大小 VmPin
pte 页表条目大小 VmPTE
大小 进程代码+数据+堆栈段的总大小 VmExe + VmData + VmStk
stk 栈段大小 VmStk
swap 已使用的交换空间大小 VmSwap

Linux注意事项:

  1. 并非所有'memtype'值都被旧版Linux内核支持。 例如,Linux 2.4内核不支持hwmpinpeakpteswap 值。
  2. 我们注意到Zabbix agent活跃项的自我监控 使用proc.mem[...,...,...,...,data]检查进程显示一个值 比VmData行在agent中报告的大4 kB /proc/<pid>/status file. 在自测量时 agent的数据段增加4 kB后恢复原状 previous size. 之前的尺寸.

Solaris

查看Solaris系统中'memtype'参数支持的值如下表所示。

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

1 默认值。