NoteStack

This page is a beginner-friendly note about reading free -m output. It focuses on practical signals of memory pressure and what to check next.

「足りてるのに不安?」free -m の見方とメモリ不足の注視点

free -m の数字を「安心 / 危険」を判断できる形に整理します。

まず前提:free -m は “Linuxが今どうメモリを使っているか” の要約

見た目は表ですが、最初にこの前提だけ揃えると迷いが減ります。

よくある不安(つまずき)
  • free が小さいと「もうメモリが無いのでは?」と思ってしまう
  • used が大きく見えて「何か暴走してる?」と疑ってしまう
先に結論(安心ポイント)

Linuxは、空いているメモリを “ムダに空けておく” より、キャッシュとして使って体感を速くすることが多いです。なので free が小さくても、すぐに不足とは限りません。

運用で見るべき核心
  • available(実質的に使える余裕)
  • Swapの使用量(逃げ始めていないか)

ここが読めると「本当に危ないか」を判断しやすくなります。

出力の形:まずは “Mem” と “Swap” を分けて読む

free -m はざっくりこの2行が本体です(-m はMB表示)。

free -m
Mem:(物理メモリ / RAM)

いま動いているプログラムやOSが、RAMをどう使っているかです。

Swap:(退避領域)

RAMが足りないときに、ディスクへ一部を逃がす領域です。RAMより遅いので、増え始めると体感性能に影響が出やすいです。

列の意味:ここだけ読めれば “だいたい” 困らない

列名を「運用で使う言葉」に置き換えます(重要なのは後半2つです)。

total(搭載量)

物理メモリの総量です。VPSだと、プラン通りかの確認にも使えます。

used(使っているように見える合計)

アプリが使っている分だけでなく、キャッシュなども含むため、ここだけで不足判断しないほうが安全です。

free(完全な未使用)

“何にも使っていない” メモリです。Linuxはここを小さく保つことが多いので、これが小さくても即アウトではありません。

shared(共有で使われている分)

複数プロセスで共有している領域などが入ります。まずは深追いしなくてOKです(判断には使いにくいことが多いです)。

buff/cache(バッファ / キャッシュ)

ディスクI/Oを速くするための “貯金” です。必要になれば、OSがここを削ってアプリへ回します。

available(実質の余裕 ⭐)

ここが一番大事です。「いま追加でアプリが使える見込み」を表します(キャッシュを解放できる分も含みます)。

読み方のコツ:free ではなく available を読む

数字の印象に引っ張られやすいので、読む順番を固定します。

運用の読み順(迷ったらこの順)
  1. available が十分あるか
  2. Swap が増えていないか
  3. 増え方(時間経過で悪化していないか)
よくある “安心パターン”
  • free は小さい
  • buff/cache が大きい
  • available がそれなりにある
  • Swap がほぼ使われていない

これは「キャッシュが働いていて健康」になりやすい形です。

よくある “危険パターン”
  • available が小さい(減り続ける)
  • Swap が増え続ける
  • 体感が遅い、またはプロセスが落ちる

この組み合わせは、実際にメモリ圧迫が起きている可能性が高いです。

Swapの見方:少しでも使っていたら危険?(→だいたいは違う)

Swapを見ると不安になりやすいので、ここも判断軸を固定します。

Swapが “少しだけ” 使われている

すぐに異常とは限りません。起動直後や一時的な負荷で数MB〜数十MB程度が動くことがあります。

Swapが “増え続ける”

これは注意です。RAMが足りずに、ディスクへ逃がし続けている可能性があります(遅くなる原因になります)。

Swapが多いのに体感が普通なこともある?

あります。Swapに置かれているのが “たまたま今使っていない領域” なら、体感に直撃しない場合もあります。なので、次の「増え方」と「swap in/out」を確認します。

注視する点:危険サインを “具体的な形” で持っておく

数値の絶対値だけでなく、「現象」と「ログ」とセットで見ると判断しやすいです。

危険サイン(現象)
  • 突然レスポンスが遅くなる(特にSSHやWeb)
  • プロセスが突然落ちる / 再起動する(OOMの可能性)
  • スパイク負荷のたびに重くなる
危険サイン(ログ)

メモリ不足で落ちているときは、dmesg に手がかりが残ることがあります。

dmesg -T | tail -n 50

「Out of memory」「Killed process」などが出ていたら、実害としてのメモリ圧迫を疑います。

危険サイン(Swapの動き)

Swapが “使われているか” だけでなく “出入りが激しいか” を見ます。

vmstat 1 5

si / so(swap in / swap out)が継続して大きいと、入れ替え(スワップ)が起きている可能性が高いです。

次に何を確認する?:原因特定の “最短ルート”

「足りないかも」と感じたら、誰が使っているかを早く掴むのが近道です。

まずは上位プロセスを見る
ps aux --sort=-%mem | head

上位にいるプロセスが “想定内” か “見覚えのないもの” かで次の行動が決まります。

常駐が多いサーバーでは top も便利
top

瞬間的な増加(スパイク)を見たいときに向いています。

サービス単位で見る(systemd環境のとき)
systemctl status nginx
systemctl status php-fpm

再起動ループや、直前に落ちた痕跡があるかを確認します(ログは環境で場所が変わります)。

判断の目安:数値は “環境次第” なので、増え方を優先する

「何MBなら危険?」はサーバーの役割で変わるので、目安は “増え方” に寄せます。

迷ったときの基準
  • available減り続ける → 何かが増殖している可能性
  • Swap が 増え続ける → RAM不足の可能性
  • vmstatsi/so が継続的に大きい → 体感劣化につながりやすい
メモ(運用でありがちな落とし穴)

「一時的に不足して、落ちて戻る」ことがあります。なので、1回だけの結果で結論を急がず、負荷がかかったタイミングでもう一度取ると判断が安定します。

よくある質問(FAQ)

Q. free がほぼ 0 でも大丈夫ですか?

A. 可能性としては “大丈夫なことが多い” です。Linuxはキャッシュ(buff/cache)を多めに持つので、free は小さくなりがちです。判断は available を優先します。

Q. used が多い=メモリ不足ですか?

A. それだけでは判断しにくいです。used はキャッシュを含むため、available と Swap の動きと合わせて見ます。

Q. Swapが少しでも使われたら、すぐ対策が必要ですか?

A. すぐに緊急とは限りません。問題は “増え続ける” かどうかと、vmstat で swap in/out が継続して出ているかです。

Q. 本当にメモリ不足で落ちているか、確かめるには?

A. dmesg(またはジャーナル)に OOM の痕跡があるかを確認します。「Killed process」などが出ていれば可能性が高いです。