English

お問い合わせ

BLOG

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 */
    };
サイバートラストのテレワークソリューション
採用情報ページ リニューアル
組込み Linux にプラスして 長期間の製品ライフサイクルをサポート EM+PLS