【RHEL7】freeコマンドについて
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
REHL7.1でインストールされるprocps-ng-3.3.10以降のfreeコマンドでは、従来のfreeコマンドと出力される内容が異なっていました。
・従来のfreeコマンドの実行結果
1 2 3 4 5 6 7 |
[root]# free -V free from procps-ng 3.3.9 [root]# free total used free shared buffers cached Mem: 1018140 596136 422004 308 764 277552 -/+ buffers/cache: 317820 700320 Swap: 839676 0 839676 |
・procps-ng-3.3.10以降のfreeコマンド実行結果
1 2 3 4 5 6 |
[root]# free -V free from procps-ng 3.3.10 [root]# free total used free shared buff/cache available Mem: 1017180 729424 91204 31580 196552 109876 Swap: 839676 32260 807416 |
大きな変更点としては、-/+ buffers/cacheの列が無くなった、availableという項目が加わったという点でしょうか。
他にも軽く調べたところ、usedに出力される値の算出方法も従来のfreeコマンドとは異なっているようです。
・従来のusedの算出方法
1 2 3 4 5 |
メモリ領域合計 - 空きメモリ領域 メモリ領域合計 : "/proc/meminfo"のMemTotalの値 空きメモリ領域 : "/proc/meminfo"のMemFreeの値 ※ -/+ buffers/cache列のusedは、上記からバッファ領域(buffers)とキャッシュ領域(cached)を除いた値が出力されます |
・procps-ng-3.3.10以降のusedの算出方法
1 2 3 4 |
メモリ領域合計 - 空きメモリ領域 - "buff/cache"の値 メモリ領域合計 : "/proc/meminfo"のMemTotalの値 空きメモリ領域 : "/proc/meminfo"のMemFreeの値 "buff/cache"の値 : "/proc/meminfo"のBuffers、Cached、Slabの値の合計 |
ちなみに、Hinemosのリソース監視の監視項目の”メモリ使用率(実メモリ)”や”実メモリ中のメモリ使用率(ユーザ)”では、従来のfreeコマンドのMem列や-/+ buffers/cache列のusedと同等のメモリ使用率が算出されます。
(HinemosではSNMPやWBEMを利用してメモリ情報を取得しているため、厳密には同じでは無いですが。)
もし、「procps-ng-3.3.10以降のfreeコマンドのusedと同等のメモリ使用率を監視したい!」という場合は、次のようなスクリプトを用意して、カスタム監視を実行するとよいでしょう。
1 2 3 4 5 6 7 8 9 |
#!/bin/bash total=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'` free=`cat /proc/meminfo | grep MemFree | awk '{print $2}'` buff=`cat /proc/meminfo | grep Buffers | awk '{print $2}'` cache=`cat /proc/meminfo | grep ^Cached | awk '{print $2}'` slab=`cat /proc/meminfo | grep Slab | awk '{print $2}'` used=`echo "scale=2; ($total - $free - $buff - $cache - $slab) * 100 / $total" | bc` echo "used,$used" |
実行結果は次のようになります。
1 2 |
[root]# ./memUsed.sh used,80.16 |
以上、簡単ですがfreeコマンドとリソース監視についての紹介でした。
(担当:KY)