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

概要

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

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. Zabbixエージェント proc.mem[] がプロセスを選択する方法を"topasrec"の例で確認してみましょう。

$ 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 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 デフォルト値