初めに
前回はこちらの記事でtopコマンドでcpu使用率の見方についてアウトプットしました。今回はそれの関連でfreeコマンドを用いてメモリの利用状況を確認しようと思います。
freeコマンドとは
freeコマンドとは、メモリの使用状況を確認するコマンドのこと。
実行してみた
実際にfreeコマンドを実行してみた結果がこちら
$ free
total used free shared buff/cache available
Mem: 16249112 516748 14813188 3096 919176 15460688
Swap: 4194304 0 4194304
このままだと読みづらいので、-h
をつけて見やすくします。
$ free -h
total used free shared buff/cache available
Mem: 15Gi 492Mi 14Gi 3.0Mi 367Mi 14Gi
Swap: 4.0Gi 0B 4.0Gi
単位もついて見やすくなってくれたところで解説します。
1行目と2行目でそれぞれメモリ領域とSWAP領域のメモリ使用量を表しています。
各列の説明は以下です。
- total:合計メモリ量
- used:現在使用中のメモリ量
- free:現在使われていないメモリ量
- shared:tmpfsで使用される共有メモリで使用しているメモリ量
- buff/cache:ファイルバッファとキャッシュメモリに使われているメモリ長
- available:プロセスが利用できるメモリ量
freeとavailableの違いですが、freeが完全に利用されていないメモリ量を表すのに対し、availableは今すぐに利用可能なメモリ量を表します。buff/cacheのメモリは「開放不可」の領域と「開放可能」な領域に分けられており、availableの値は、freeのメモリ量に加えてbuff/cacheの「開放可能」なメモリ量を含んだ値になっているというわけです。
tmpfsとは、linuxで使える一時的にデータを格納するために使えるファイルシステムのことらしいです。shredの値はそのメモリ量を表しています。
SWAP領域とは、ストレージ上に作成される仮想的なメモリ領域のことで、メモリ領域が足りなくなったときに初めて使われる領域です。
メモリ領域に余裕があるのでswapのusedは0になってますね。
オプション集
-h :見やすい形式で表示する
hはhumanの略です。人間がわかりやすい形に整形して表示してくれます。
$ free -h
total used free shared buff/cache available
Mem: 15Gi 492Mi 14Gi 3.0Mi 367Mi 14Gi
Swap: 4.0Gi 0B 4.0Gi
-s :一定時間間隔で出力する
-s
をつけることで一定時間間隔で出力することができます。
3秒おきに計測した結果が以下です。
ctrl
+ c
で終了します。
$ free -h -s 3
total used free shared buff/cache available
Mem: 15Gi 514Mi 14Gi 3.0Mi 963Mi 14Gi
Swap: 4.0Gi 0B 4.0Gi
total used free shared buff/cache available
Mem: 15Gi 514Mi 14Gi 3.0Mi 963Mi 14Gi
Swap: 4.0Gi 0B 4.0Gi
total used free shared buff/cache available
Mem: 15Gi 514Mi 14Gi 3.0Mi 963Mi 14Gi
Swap: 4.0Gi 0B 4.0Gi
^C
$
-t :列の合計を表示する
-t
をつけると各列の合計を出してくれます。
元が2行な上にswapはメモリがいっぱいになるまで使用されないので使う場面あまりなさそうな気が。
$ free -t
total used free shared buff/cache available
Mem: 16249112 526152 14736516 3144 986444 15450024
Swap: 4194304 0 4194304
Total: 20443416 526152 18930820
終わりに
今回はfreeコマンドを用いたメモリ状況の確認方法についてアウトプットしました。
正直topコマンドでも見れないか?って思ったのは内緒です。
Webパフォーマンスを改善していく中で実際に使ってみるとその辺の使い分けが見えてくるかもなので、その時はまたアウトプットします。
参考
Linuxのfreeコマンドでサーバーのメモリ状況を確認する
free - システムの使用中のメモリ量や空きメモリ量を表示する
ITエンジニアの豆知識 メモリのSWAPホントに理解してる…?
【Linux運用経験者が語る】freeコマンドの見方とは?
tmpfs とは