proc.mem アイテムの memtype パラメーターに関する注意事項

概要

memtype パラメータは、Linux、AIX、FreeBSD、Solarisの各プラットフォームでサポートされています。

これらすべてのプラットフォームでは、pmem、rss、vsize の3つの一般的な memtype 値がサポートされています。 さらに、一部のプラットフォームでは、プラットフォーム固有の 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 列
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 エージェント自身がカウントされることを示しています。これはおそらく意図した結果ではありません。

  1. プロセスの確認に ps -ef を使用しないでください。カーネル以外のプロセスのみが表示されます。Zabbix エージェントから認識できるすべてのプロセスを確認するには、ps -Af を使用します。

  2. topasrec を例に、Zabbix エージェントの 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>]

条件は次のとおりです。

  • 1つ目の条件は、プロセス名(引数 <name>)です。 この例では、Zabbixエージェントはこれを topasrec と認識します。一致させるには、topasrec を指定するか、空のままにします。
  • 2つ目の条件は、ユーザー名(引数 <user>)です。 一致させるには、root を指定するか、空のままにします。
  • プロセス選択で使用される3つ目の条件は、引数 <cmdline> です。 Zabbixエージェントは、その値を /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 と認識します。 一致させるには、この文字列に一致する正規表現を指定するか、空のままにします。

引数 <mode> と <memtype> は、上記の3つの条件を使用した後に適用されます。

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 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ファイルのソース
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カーネルでは、hwm、pin、peak、pte、swapの値はサポートされていません。
  2. proc.mem[...,...,...,...,data]を使用してZabbixエージェントのアクティブチェックプロセスを自己監視すると、エージェントの/proc/<pid>/statusファイルのVmData行で報告される値より4 kB大きい値が表示されることを確認しています。 自己測定の時点では、エージェントのデータセグメントが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 デフォルト値