This is a translation of the original English documentation page. Help us make it better.

9 Notes on memtype parameter in proc.mem items

概要

memtypeパラメーターは、Linux,AIX,FreeBSD,およびSolarisでサポートされています。

'memtype'の3つの一般的な値である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

Notes for AIX:

  1. When choosing parameters for proc.mem[] item key on AIX, try to specify narrow process selection criteria. Otherwise there is a risk of getting unwanted processes counted into proc.mem[] result.

Example:

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

This example shows how specifying only command line (regular expression to match) parameter results in Zabbix agent self-accounting - probably not what you want.

  1. Do not use "ps -ef" to browse processes - it shows only non-kernel processes. Use "ps -Af" to see all processes which will be seen by Zabbix agent.

  2. Let's go through example of 'topasrec' how Zabbix agent proc.mem[] selects processes.

\$ 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[] has arguments:

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

The 1st criterion is a process name (argument <name>). In our example Zabbix agent will see it as 'topasrec'. In order to match, you need to either specify 'topasrec' or to leave it empty. The 2nd criterion is a user name (argument <user>). To match, you need to either specify 'root' or to leave it empty. The 3rd criterion used in process selection is an argument <cmdline>. Zabbix agent will see its value as '/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'. To match, you need to either specify a regular expression which matches this string or to leave it empty.

Arguments <mode> and <memtype> are applied after using the three criteria mentioned above.

FreeBSD

以下の表がFreeBSDの'memtype'パラメーターでサポートされている値です。

サポート値 説明 kinfo_proc構造体のソース 互換
vsize 仮想メモリサイズ kp_eproc.e_vm.vm_map.size or ki_size ps -o vsz
pmem 実メモリのパーセンテージ calculated from rss ps -o pmem
rss 物理メモリ消費量 kp_eproc.e_vm.vm_rssize or ki_rssize ps -o rss
size 1 プロセスのサイズ(コード + データ + スタック) tsize + dsize + ssize
tsize テキスト (コード)サイズ kp_eproc.e_vm.vm_tsize or ki_tsize ps -o tsiz
dsize データサイズ kp_eproc.e_vm.vm_dsize or ki_dsize ps -o dsiz
ssize スタックサイズ kp_eproc.e_vm.vm_ssize or 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カーネルは、 hwmpinpeakpte、およびswapの値をサポートしていません。
  2. proc.mem[...,...,...,...,data]を使用したZabbixエージェントのアクティブチェックプロセス自己監視は、エージェントの/proc/<pid>/statusファイルのVmData行で報告される値よりも4kB大きい値が示されていることがわかりました。自己測定時にエージェントのデータセグメントは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 デフォルト値