Linux

【Linux運用経験者が語る】freeコマンドの見方とは?

 

あなた

「free」コマンドでメモリの状態を確認することは知ってるんだけど、どこを見ればいいんだろう?
実際の運用現場でどんな使い方をしているのか知りたい!

こんなお悩みを解決します。

☑本記事の内容

 

・「free」は何が出来るコマンド?
・「free」コマンドの見方
・覚えておくべきオプション
・現場で確認するポイント2つ
・便利コマンド2つ

 

☑本記事の信頼性

・Linux運用~構築を約5年経験
・LPIC level3を取得済み

 

以前の記事でも紹介しておりますが、監視アラートの対応でLinux確認コマンドを使用した経験があります。

 

その中で今回紹介する「free」コマンドを使用した経験もあります。
率直な感想ですが、「free」コマンドは見方がわかりづらいコマンドである印象です。

 

僕自身も運用業務をやる際には、google検索や先輩に使い方を確認していました。
「free」コマンドの見方を把握していれば、運用業務がやりやすくなると思います。

 

前置きはこんな感じにして、本題に入っていきたいと思います。

 

注意ポイント

本記事のLinuxコマンドについては、RHEL/CentOSにて使用されるコマンドになります。
別のLinux(SUSE/Ubuntu等)とはコマンドが違う場合があります。
その点については、ご了承頂ければと思います。

 

「free」は何ができるコマンド?

 

「free」は一言でいうと、「メモリの状況」を確認できるコマンドです。

 

具体的には、

  • メモリ使用量/スワップ使用量
  • メモリ空き容量/スワップ空き容量

を確認することができます。

 

こちらは、僕自身の具体例になります。

実際のLinuxサーバーの運用業務にてメモリ使用量のアラートを検知した際に、
「free」コマンドを使用して確認作業を行っていました。

 

このように、メモリ使用量等のメモリに関する情報を確認できるコマンドになります。

 

「free」コマンドの見方

Linux6系とLinux7系で表示が違います。

今回は、どちらのパターンについても紹介していきたいと思います。

 

Linux6系(RHEL/CentOS)
Linux7系(RHEL/CentOS)

 

Linux6系(RHEL/CentOS)

freeコマンドの実行結果は、下記のようになります。

 

 

では、項目について説明していきたいと思います。

 

  • 「free」コマンドの行
項目 説明
Mem: メモリ
-/+ buffers/cache: バッファキャッシュとページキャッシュを考慮したメモリ
Swap: スワップ

 

  • 「free」コマンドの列
項目 説明
total メモリ/スワップ領域の総容量
used メモリ/スワップ領域の使用量
free メモリ/スワップ領域の空き容量
shared 共有メモリ
buffer バッファのキャッシュ
cached ページのキャッシュ

 

【補足】

・「-/+ buffers/cache:」の「free」について
「Mem」の「free+buffers+cached」で計算したものになります。

参考リンク

 

Linux7系(RHEL/CentOS)

freeコマンドの実行結果は、下記のようになります。

 

では、項目について説明していきたいと思います。

 

  • 「free」コマンドの行
項目 説明
Mem: メモリ
Swap: スワップ

 

  • 「free」コマンドの列
項目 説明
total メモリ/スワップ領域の総容量
used メモリ/スワップ領域の使用量
free メモリ/スワップ領域の空き容量
shared 共有メモリ
buff/cache バッファ+キャッシュの値
available キャッシュなどを解放することで利用可能なメモリ量

 

【補足】

・「available」の値について
「/proc/meminfo」の「MemAvailable:」と同様の意味になります。

 

覚えておくべきオプション

 

 

Linux6系とLinux7系で共通のオプションとなります。

 

オプション 説明
-b 表示結果をバイト単位で表示
-k 表示結果をキロバイト単位で表示
-m 表示結果をメガバイト単位で表示
-s 秒数  指定した秒数ごとに表示

 

使用例

  • Linux6系(RHEL/CentOS

・メガバイト単位で表示したい場合

[root@tspweb02 ~]# free -m
total used free shared buffers cached
Mem: 3961 184 3776 0 5 38
-/+ buffers/cache: 140 3820
Swap: 3967 0 3967
[root@tspweb02 ~]#

・2秒ごとに結果を表示させたい場合

[root@tspweb02 ~]# free -s 2
total used free shared buffers cached
Mem: 4056432 189084 3867348 192 5676 39812
-/+ buffers/cache: 143596 3912836
Swap: 4063228 0 4063228

total used free shared buffers cached
Mem: 4056432 189100 3867332 192 5676 39812
-/+ buffers/cache: 143612 3912820
Swap: 4063228 0 4063228

^C
[root@tspweb02 ~]#

 

  • Linux7系(RHEL/CentOS)

・メガバイト単位で表示したい場合

[root@tspweb01 ~]# free -m
total used free shared buff/cache available
Mem: 3791 131 3508 8 151 3448
Swap: 3967 0 3967
[root@tspweb01 ~]#

・2秒ごとに結果を表示させたい場合

[root@tspweb01 ~]# free -s 2
total used free shared buff/cache available
Mem: 3882252 134808 3592316 8704 155128 3530764
Swap: 4063228 0 4063228

total used free shared buff/cache available
Mem: 3882252 134824 3592332 8704 155096 3530780
Swap: 4063228 0 4063228

total used free shared buff/cache available
Mem: 3882252 133464 3593692 8704 155096 3532140
Swap: 4063228 0 4063228

^C
[root@tspweb01 ~]#

 

現場で確認するポイント2つ

実際の運用現場で確認するポイントについて解説します。

 

①現在のメモリ使用量/空き容量
②スワップ領域使用率

 

現在のメモリ使用量/空き容量

Linux6系とLinux7系のそれぞれのOSでの確認方法について紹介したいと思います。

 

  • Linux6系(RHEL/CentOS)

下記、実行結果の赤枠の部分が見るべきポイントです。
こちらの赤枠の部分から、現在のメモリ使用量を把握します。

 

 

-/+ buffers/cache:

項目 説明
used 現在のメモリ使用量
free 現在のメモリ空き容量

 

【備考】
・Mem行のFreeは何の用途にも使っていない物理メモリとのことです。

※詳しくはこちらのアイティメディアさんの記事に解説があります。

 

  • Linux7系(RHEL/CentOS)

下記、実行結果の赤枠の部分が見るべきポイントです。
こちらの赤枠の部分から、現在のメモリの空き容量を把握します。

 

 

項目 説明
available 利用可能なメモリ容量

 

備考
・「available」については、下記redhat公式ページに詳しい記載があります。

 

②SWAP領域使用率

そもそもスワップ領域とは、メモリ容量が足りなくなった時に一時的にしまっておくための領域になります。
スワップ領域は、ハードディスク内にあります。

 

  • Linux6系(RHEL/CentOS)

Linux6系ではこちらの赤枠の部分を確認します。
こちらの赤枠の部分から、現在のスワップ領域の使用量を確認します。

 

Swap

項目 説明
total Swapの総容量
used Swapの使用量
free Swapの空き容量

 

  • Linux7系(RHEL/CentOS)

Linux7系ではこちらの赤枠の部分を確認します。
こちらの赤枠の部分から、現在のスワップ領域の使用量を確認します。

 

項目 説明
total Swapの総容量
used Swapの使用量
free Swapの空き容量

 

 

便利コマンド2つ

 

 

①メモリ使用率確認
②スワップ使用率確認

 

①メモリ使用率確認

運用の現場では、メモリの状況をメモリ使用率で監視していることが多いです。

 

freeコマンドの実行結果の場合、使用率迄は確認することができません。
そのため、記事にて紹介するコマンドをコピー&ペーストで使用頂くと早いです。

 

  • Linux6系(RHEL/CentOS)の場合
free -m | grep -i buffers/cache | awk '{print $3/($3+$4)*100}'

 

実行結果

[root@tspweb02 ~]# free -m | grep -i buffers/cache | awk '{print $3/($3+$4)*100}'
75.2525
[root@tspweb02 ~]#

 

コマンドの内容を説明すると、このような数式でメモリ使用率を求めています。

 

メモリ使用率を求める数式

メモリ使用率 = buffers/cache(used) / ( buffers/cache(used) + buffers/cache(free) ) × 100

 

※「buffers/cache(used)」と「buffers/cache(free)」は下記の赤枠の部分です。

 

  • Linux7系(RHEL/CentOS)の場合
free | grep -i mem | awk '{print $7/$2*100}'

実行結果

[root@tspweb01 ~]# free | grep -i mem | awk '{print $7/$2*100}'
40.3703
[root@tspweb01 ~]#

 

コマンドの内容を説明すると、このような数式でメモリ使用率を求めています。

メモリ使用率を求める数式

メモリ使用率 = available / total × 100

 

※「available」と「total」は下記の赤枠の部分です。

 

②スワップ使用率確認

スワップも使用率で監視していることが多いです。


スワップ使用率もfreeコマンドから確認できません。
こちらも、記事にて紹介するコマンドをコピー&ペーストで使用頂くと早いです。

 

  • Linux6系(RHEL/CentOS)の場合
free -m | grep -i buffers/cache | awk '{print $3/($3+$4)*100}'

実行結果

[root@tspweb02 ~]# free | grep -i swap | awk '{print $3/$2*100}'
76.399
[root@tspweb02 ~]#

 

コマンドの内容を説明すると、このような数式でスワップ使用率を求めています。

スワップ使用率を求める数式

スワップ使用率 = Swap(used) / Swap(total) × 100

※Swap(used)と Swap(total)は下記の赤枠の部分です。

 

  • Linux7系(RHEL/CentOS)の場合
free | grep -i swap | awk '{print $3/$2*100}'

 

実行結果

[root@tspweb01 ~]# free | grep -i swap | awk '{print $3/$2*100}'
1.64185
[root@tspweb01 ~]#

 

コマンドの内容を説明すると、このような数式でスワップ使用率を求めています。

スワップ使用率を求める数式

スワップ使用率 = Swap(used) / Swap(total) × 100

 

※「available」と「total」は下記の赤枠の部分です。

 

まとめ : Linux6系と7系で確認結果が違う。

 

今回は、「free」コマンドの使い方から便利なコマンド迄、ご紹介してきました。

Linuxサーバーの運用監視の現場では、よく使用されるコマンドのため、使い方や見方を抑えておきましょう。

 

特にメモリ/スワップ領域の使用率を確認するシーンは多いです。
(自分が運用監視をやっていた頃は、わからなくてよく計算していました。)

 

最初はわからないかもしれませんが、使っているとコマンド操作に慣れてきます。

 

他の確認系コマンドと並行して、freeコマンドも覚えましょう!

 

今回は、以上です。

 

【関連記事】

【運用者必見】Linuxサーバーの「w」コマンドについて

【運用者必見】Linuxサーバーの「top」コマンドの使い方を解説します

-Linux
-

Copyright© 元監視者のエンジニアブログ , 2020 All Rights Reserved Powered by AFFINGER5.