【RHEL7】freeコマンドについて
投稿日: / 更新日:

この記事は3年以上前に書かれたものです。情報が古い可能性があります。
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)








