memtype参数在Linux、AIX、FreeBSD和Solaris平台上受支持。
所有平台均支持三种常见的'memtype'值:pmem、rss和vsize。此外,某些平台还支持特定于平台的'memtype'值。
查看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系统注意事项:
示例:
$ zabbix_agentd -t proc.mem[,,,NonExistingProcess,rss] proc.mem[,,,NonExistingProcess,rss] [u|2879488] 此示例表明仅指定命令行(正则表达式匹配)参数会导致Zabbix agent自身进程被计入统计——这通常不是您期望的结果。
不要使用"ps -ef"浏览进程 - 它仅显示非内核进程。使用"ps -Af"查看所有进程,这些进程将被Zabbix agent识别。
让我们通过'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上'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系统下'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注意事项:
hwm、pin、peak, pte 和 swap 值。proc.mem[...,...,...,...,data]检查进程显示一个值 比VmData行在agent中报告的大4 kB /proc/<pid>/status file. 在自测量时 agent的数据段增加4 kB后恢复原状 previous size. 之前的尺寸.查看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 默认值。