Lから始まるLinux

6章3話
CPU
6章4話 メモリ
もくじ
6章5話
ストレージ
メモリ
若木 みどり
前回は CPU リソースの 調べ方を教えてもらったよ!
若木 しげる
今回はメモリリソースの 見方を学んでいこう
free コマンド
若木 しげる
free メモリの利用状況を 表示するよ
free [オプション]...
オプション役割
-h, --human数値を人間に読みやすい形式で表示
若木 みどり
「人間に読みやすい形式」って?
若木 しげる
「人間に読みやすい(human-readable)形式」数値に接尾辞(K, M, G など)を付けて短い値を表示をするよ例えば 2000000000020G のように表示するんだ大きな数値を扱うコマンドにはたいていこのオプションがあるよ
若木 みどり(驚き)
おおっ!これは親切!
若木 しげる
では 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指定されたコマンドを定期実行して出力をフルスクリーン表示するよfreevmstat と一緒に使われることが多いんだ
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 だよ!
まとめ
若木 みどり
今回はメモリリソースを確認する方法を学んだよ!freevmstat で状況を知れるよ
若木 みどり
メモリ不足は以下の状況から読み取れるんだね!
  1. available の不足
  2. スワップ領域の利用
若木 しげる
メモリが不足するとシステムの動作が大幅に遅くなるよまた「OOM Killer(out-of-memory killer)」というプロセスを止めてメモリを空ける仕組みが動き出すんだメモリが不足したらメモリを消費しているプロセスを停止させるのが一般的な対応だよ