前回は CPU リソースの
調べ方を教えてもらったよ!
今回はメモリリソースの
見方を学んでいこう
free
コマンドfree
は
メモリの利用状況を
表示するよ
free [オプション]...
オプション | 役割 |
---|---|
-h , --human | 数値を人間に読みやすい形式で表示 |
K
, M
, G
など)を付けて短い値を表示をするよ例えば 20000000000
を20G
のように表示するんだ大きな数値を扱うコマンドにはたいていこのオプションがあるよおおっ!これは親切!
では
free
を-h
オプションと一緒に実行してみよう!free -h
うん!
total used free shared buff/cache available
Mem: 7.9Gi 1.3Gi 5.3Gi 7.0Mi 1.3Gi 6.5Gi
Swap: 199Mi 0B 199Mi
Mem:
とSwap:
の2行があるね?Mem:
はSwap:
はストレージ上の領域でメモリ上のデータを退避する場所なんだメモリに十分な空きが無い場合に使われるのでスワップ領域が使われるのはメモリ不足のサインだよ
へぇ…この行だけでもメモリの状況がわかるんだね!
次は個々の項目を説明していくよ
項目 | 意味 |
---|---|
total | 総メモリ容量 |
used | 利用中のメモリ容量(= total - free - buff/cache) |
free | プロセスなどで利用されいる容量 |
shared | 主に tmpfs で使用されているメモリ容量 |
buff/cache | バッファやキャッシュに使われているメモリ容量 |
available | 必要があればすぐに空けられるメモリ容量 |
tmpfs って何かな?
メモリ領域をファイルシステムとして扱う仕組みのことなんだ
/run
で使われている場合が多いよ能動的に使っていなければほとんど影響ないのであまり気にしなくてもいい項目だよバッファやキャッシュとは?
作業などで使ったデータだけど「再利用の可能性がある」などの理由で メモリ上に残されているデータだよキャッシュを使い回すことで同様の処理を省いて高速化できる場合があるんだ
used の値が total にかなり近いねメモリに空きがあまり無いのかな?
メモリに空きがあると効率を上げるためにバッファやキャッシュとして積極的に使われるんだメモリに余裕があってもused と total が近いことはよくあるよ
メモリの空きに余裕があるかどうかはavailable が十分あるかどうかで判断するといいよ
vmstat
コマンドvmstat
はより詳細なメモリ使用状況を表示するよvmstat [オプション]... [間隔[回数]]
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 0 0 5545200 131408 1277248 0 0 0 5 189 58 59 0 41 0 0
ただ通常はここまで詳細な情報が必要になることはないよこういうコマンドがあるということだけ覚えておこう
使う必要が出たら
man
で調べるね!man vmstat
watch
コマンドwatch
は指定されたコマンドを定期実行して出力をフルスクリーン表示するよfree
や vmstat
と一緒に使われることが多いんだwatch [オプション]... コマンド
オプション | 役割 |
---|---|
-n 秒数 , --interval 秒数 | 指定された秒数ごとに更新(デフォルトは2秒) |
へぇ…どんなものだろう?
これは動かして見たほうが早いよ
free
と一緒に使ってみよう!watch -n 1 free -h
うん!
Every 1.0s: free -h carter: Mon Jan 13 18:33:40 2025
total used free shared buff/cache available
Mem: 7.9Gi 758Mi 5.9Gi 7.0Mi 1.4Gi 7.1Gi
Swap: 199Mi 0B 199Mi
おお!出力内容が定期的に更新されて
top
と似たような感じになるんだね!終了は Ctrl + C だよ!
今回はメモリリソースを確認する方法を学んだよ!
free
や vmstat
で状況を知れるよメモリ不足は以下の状況から読み取れるんだね!
- available の不足
- スワップ領域の利用
メモリが不足するとシステムの動作が大幅に遅くなるよまた「OOM Killer(out-of-memory killer)」という プロセスを止めてメモリを空ける仕組みが動き出すんだメモリが不足したらメモリを消費しているプロセスを停止させるのが一般的な対応だよ