現在位置: ホーム / 製品・サービス / 統合システム監視 MIRACLE ZBX / MIRACLE ZBX - Zabbix テック・ラウンジ / vm.memory.size パラメータについての解説

vm.memory.size パラメータについての解説

MIRACLE ZBX または Zabbix で取得できる vm.memory.size パラメータについて解説します。

概要

本ドキュメントでは、MIRACLE ZBX または Zabbix で取得できる vm.memory.size パラメータについて解説します。今回の監視対象は Linux OS とします。

調査対象は MIRACLE ZBX 3.0.10-1 を使用しています。

 

解説

 

キー

詳細

vm.memory.size[total]

使用可能な物理メモリの合計値

vm.memory.size[buffers]

バッファの値

vm.memory.size[cached]

キャッシュの値

vm.memory.size[free]

空きメモリの値

vm.memory.size[used]

現在使用されているメモリの値

vm.memory.size[pused]

total に対する used の割合

vm.memory.size[available]

利用可能な物理メモリの合計値

vm.memory.size[pavailable]

total に対する available の割合

 

なお図に表したものが以下になります(カッコ内は構造体のメンバ)

vm.memory.size構造体(tl-013用)

 

詳細

それぞれのキーについて解説します

 vm.memory.size[total]

   35         SET_UI64_RESULT(result, (zbx_uint64_t)info.totalram * info.mem_unit);

 sysinfo から取得した totalram の値を返します。

 

 vm.memory.size[buffers]

   65         SET_UI64_RESULT(result, (zbx_uint64_t)info.bufferram * info.mem_unit);

sysinfo から取得した bufferram の値を返します。

 

vm.memory.size[cached] 

     76         if (NULL == (f = fopen("/proc/meminfo", "r")))
    77         {
……
    82         if (FAIL == (res = byte_value_from_proc_file(f, "Cached:", NULL, &value)))
    83         {
    84                 SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot obtain the value of Cached from /proc/meminfo."));
    85                 goto close;
…...
    93         SET_UI64_RESULT(result, value);

/proc/meminfo から Cached: に該当する行を探して値を返します。

 

vm.memory.size[free]

     50         SET_UI64_RESULT(result, (zbx_uint64_t)info.freeram * info.mem_unit);

sysinfo から取得した freeram の値を返します。

 

vm.memory.size[used]

    108         SET_UI64_RESULT(result, (zbx_uint64_t)(info.totalram - info.freeram) * info.mem_unit);

totalram から freeram を引いた値を返します。

 

vm.memory.size[pused]

    129         SET_DBL_RESULT(result, (info.totalram - info.freeram) / (double)info.totalram * 100);

totalram から freeram を引いた値が全体(totalram)に占める割合を返します。

 

vm.memory.size[available]

  143 if (NULL == (f = fopen("/proc/meminfo", "r")))
  144 {
……
148
149 if (FAIL == (res = byte_value_from_proc_file(f, "MemAvailable:", "Cached:", &value)))
150 {
……
155 if (SUCCEED == res)
156 {
157 SET_UI64_RESULT(result, value);
158 ret = SYSINFO_RET_OK;
159 goto close;
160 }
161
162 if (FAIL == (res = byte_value_from_proc_file(f, "Cached:", NULL, &value)))
163 {
……
176
177 SET_UI64_RESULT(result, (zbx_uint64_t)(info.freeram + info.bufferram) * info.mem_unit + value);

もし /proc/meminfo に “MemAvailable:” があればその値を返し、なければ、 freeram と bufferram,cache の合計値を返します。

cache の取得方法は上記参照

 

vm.memory.size[pavailable]

    218         SET_DBL_RESULT(result, available / (double)total * 100);

available 値が全体(totalram)に占める割合を返します。

 

free と available の違い

free と available は、それぞれ別の値を返しています。

free は未使用領域のみの値を返しているのに対して、 available は free に、バッファとキャッシュの値を加えた値を返しています。そのため、 used の値に対して available の値が大きく見えます。

 

参考

 man sysinfo より

    struct sysinfo {
         long uptime;             /* Seconds since boot */
         unsigned long loads[3];  /* 1, 5, and 15 minute load averages */
         unsigned long totalram;  /* Total usable main memory size */
         unsigned long freeram;   /* Available memory size */
         unsigned long sharedram; /* Amount of shared memory */
         unsigned long bufferram; /* Memory used by buffers */
         unsigned long totalswap; /* Total swap space size */
         unsigned long freeswap;  /* swap space still available */
         unsigned short procs;    /* Number of current processes */
         unsigned long totalhigh; /* Total high memory size */
         unsigned long freehigh;  /* Available high memory size */
         unsigned int mem_unit;   /* Memory unit size in bytes */
         char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding to 64 bytes */
     };

 

 

MIRACLE ZBX 製品・サポートサービス 詳しくはこちら

MIRACLE ZBX Virtual Appliance V3.0 評価版のお申し込み

製品・サービスについてのお問い合わせ

お問い合わせフォームMIRACLE ZBX製品やサポートサービスについてのご相談やご質問は、「お問い合わせフォーム」よりお気軽にお問い合わせください。