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

概述

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

所有平台均支持三种通用的 'memtype' 值:pmemrssvsize。此外,部分平台还支持特定于平台的 'memtype' 值。

AIX

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

支持的值 描述 在procentry64结构中的来源 尝试兼容的对象
vsize 脚注 虚拟内存大小 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 虚拟内存大小 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 脚注 虚拟内存大小 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。我们注意到,使用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 默认值。