【覚書き】freeコマンドでメモリ状況を見る

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/2ba86c0ac31420cbc108)の記事で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
```
単位もついて見やすくなってくれたところで解説します。

１行目と２行目でそれぞれメモリ領域と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は０になってますね。


# オプション集
### -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コマンドでサーバーのメモリ状況を確認する](https://qiita.com/yasushi-jp/items/5553ec20dc3a9dbab1f7)
[free - システムの使用中のメモリ量や空きメモリ量を表示する](https://linuxcommand.net/free/)
[ITエンジニアの豆知識　メモリのSWAPホントに理解してる…？](https://beyondjapan.com/blog/2022/01/mame_swap/)
[【Linux運用経験者が語る】freeコマンドの見方とは？](https://satton-infra.com/linux-free/)
[tmpfs とは](https://qiita.com/miyuki_samitani/items/0c14f7128b570e8c8b14)