Linuxでメモリ使用率を確認する方法|freeコマンドの見方と使用率計算を解説

コマンドリファレンス

Linuxでメモリ使用率を確認するには、free -h コマンドが最もよく使われます。ただし、free の出力を正しく読むには availablebuff/cache の意味を理解することが重要です。

この記事では、free コマンドの見方から、メモリ使用率の計算方法、top/proc/meminfo との使い分けまでまとめて解説します。

Linuxでメモリ使用率を確認する代表コマンド

Linuxのメモリ使用率を確認する主なコマンドは以下の3つです。

# 概要を素早く確認する
free -h

# プロセス別の使用状況を含めてリアルタイム確認
top

# 詳細な数値を確認する
cat /proc/meminfo

日常的には free -h で十分です。詳細な調査が必要な場合は /proc/meminfotop を使います。

freeコマンドの基本

基本的な使い方

free コマンドの主なオプションは以下の通りです。

# 単位なし(キロバイト表示)
free

# 人が読みやすい単位で表示(MB/GB)
free -h

# メガバイトで表示
free -m

# 1秒ごとに更新して表示(Ctrl+Cで停止)
free -s 1

通常は free -h を使えば、単位付きで見やすく表示されます。

free -h の出力例

$ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       3.2Gi       8.1Gi       512Mi       4.2Gi        11Gi
Swap:          2.0Gi          0B       2.0Gi

この出力にある各列の意味を次のセクションで説明します。

free出力の各項目の意味

free コマンドの出力には以下の列があります。

  • total: 物理メモリの総量(搭載されているRAM全体)
  • used: OS・プロセスが使用中のメモリ量(buff/cacheを含む)
  • free: 何も割り当てられていない純粋な空きメモリ
  • shared: 複数のプロセスが共有しているメモリ(tmpfsなど)
  • buff/cache: バッファとキャッシュに使われているメモリ
  • available: 新しいアプリケーションが実際に使えるメモリの推定量

availableを重視する理由

メモリの空き具合を判断するときは、free 列ではなく available 列を見てください

Linuxは空きメモリをディスクキャッシュ(buff/cache)として活用します。そのため free の値は常に小さく見えますが、実際には buff/cache の大部分はアプリケーションが要求すれば即座に解放されます。

available はこの「解放可能なキャッシュ」を考慮した値なので、実際に使えるメモリの目安として適切です。

buff/cacheが多くても問題ない

buff/cache の値が大きくても、メモリ不足の状態ではありません。Linuxのカーネルが空きメモリを有効活用してディスクアクセスを高速化しているだけです。アプリケーションがメモリを要求した際には自動的に解放されます。

問題があるのは available が極端に少ない場合や、Swapが継続的に使われている場合です。

メモリ使用率の計算方法

正しい計算式:(total – available) / total × 100

Linuxでのメモリ使用率は以下の式で計算するのが正確です。

# freeコマンドの出力からawkで計算する例
free | awk '/Mem/ { printf "使用率: %.1f%%\n", ($2 - $7) / $2 * 100 }'

この式は「全体から実際に利用可能な量を引いた部分」を使用中と見なすため、buff/cacheの誤解が生じません。

used / total × 100 との違い

used / total * 100 で計算すると、buff/cacheを含んだ値になるため、実際より高い使用率が表示されます。

計算式 buff/cacheの扱い 適切な用途
(total – available) / total 含めない(解放可能分は除外) 実際の使用率確認
used / total 含む OS全体が確保しているメモリ量の確認

監視スクリプトや日常確認では (total - available) / total * 100 を使うことを推奨します。

数値を直接読み取る場合

$ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       3.2Gi       8.1Gi       512Mi       4.2Gi        11Gi

上記の例では:

  • total: 15GB
  • available: 11GB
  • 使用率 ≒ (15 – 11) / 15 × 100 ≒ 26.7%

topコマンドでメモリ使用率を確認する

topの基本的な使い方

top

起動後、上部にメモリ情報が表示されます。

MiB Mem :  15360.0 total,   8294.4 free,   3276.8 used,   3788.8 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  11264.0 avail Mem

プロセス一覧ではメモリ使用量でソートするには Shift + M を押します。

htopでより見やすく確認する

# htopがインストールされていない場合
sudo apt install htop   # Ubuntu/Debian
sudo yum install htop   # CentOS/RHEL

# 起動
htop

htop はバーグラフでメモリ使用量が視覚的に確認でき、プロセスのフィルタリングや並び替えも簡単です。

/proc/meminfoから確認する

/proc/meminfo はカーネルが管理するメモリの詳細情報が確認できるファイルです。

cat /proc/meminfo

出力例:

MemTotal:       15728640 kB
MemFree:         8493056 kB
MemAvailable:   11534336 kB
Buffers:          512000 kB
Cached:          3276800 kB
SwapTotal:       2097152 kB
SwapFree:        2097152 kB

特定の値だけ取り出したい場合は grep を使います。

# 主要な値だけ確認
grep -E "MemTotal|MemAvailable|SwapTotal|SwapFree" /proc/meminfo

freeコマンドと/proc/meminfoの使い分け

コマンド 特徴 向いている用途
free -h シンプルで読みやすい 日常的な確認、スクリプト
top プロセス別もリアルタイム確認 負荷調査、プロセス監視
/proc/meminfo 詳細な数値、スクリプト連携しやすい 詳細調査、監視スクリプト

プロセス別のメモリ使用量を確認する

psコマンドで確認する

# メモリ使用量の多い順にプロセスを表示
ps aux --sort=-%mem | head -10

出力例:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data  1234  0.2  5.3 512000 83200 ?        S    10:00   0:02 apache2
mysql     2345  0.1  4.2 409600 65536 ?        Sl   10:00   0:05 mysqld

%MEM 列が各プロセスのメモリ使用率、RSS 列が実際に使っている物理メモリ量(KB)です。

topでプロセス別に確認する

top

top 起動後に Shift + M でメモリ使用量順にソートできます。q で終了します。

特定プロセスのメモリ使用量を確認する

# プロセス名で検索
ps aux | grep nginx

# PIDがわかっている場合
cat /proc/12345/status | grep VmRSS

Swapの確認方法

freeコマンドでSwapを確認する

free -h

出力の Swap 行を確認します。

Swap:          2.0Gi        500Mi       1.5Gi

used が 0 または少量であれば問題ありません。

swapon –showで詳細を確認する

swapon --show

出力例:

NAME      TYPE SIZE  USED PRIO
/dev/sda5 part 2G    0B   -2

Swapパーティションやファイルの場所、サイズ、使用量を確認できます。

監視で使う場合の注意点

  • available を監視するfree 列でなく available を監視ターゲットにする
  • 一時的な増加を過剰反応しない:バッチ処理や大きなファイル操作の直後はキャッシュが増える
  • Swapの使用量を見る:Swapが継続的に増加している場合はメモリ不足の兆候
  • トレンドで判断する:1回の確認ではなく時間帯別・曜日別の傾向を見る

メモリ不足を疑う目安

以下の状態が見られる場合はメモリ不足の可能性があります。

  • available が total の 10〜20% を下回っている
  • Swap の used が継続的に増加している
  • top でシステム全体の %MEM 合計が高い状態が続く
  • アプリケーションの応答が遅くなっている(スワップアウトの可能性)

よくある失敗例

freeのusedだけ見てメモリ不足と判断する

used が大きくても、その多くが buff/cache であれば問題ありません。available が十分にあれば、新しいアプリケーションは動作できます。

buff/cacheを無駄な使用量と誤解する

buff/cache はLinuxがディスクアクセスを高速化するために使うキャッシュで、アプリケーションが必要になれば自動的に解放されます。「無駄」ではなく、むしろシステムが効率的に動いているサインです。

Swapの使用量を見落とす

free -h の出力を見るとき、Mem: 行だけでなく Swap: 行も確認してください。Swapが使われている場合、システムはメモリ不足でディスクを代替として使っており、パフォーマンス低下の原因になります。

プロセス別の使用量を確認しない

メモリが逼迫している場合は、どのプロセスが消費しているかを ps aux --sort=-%memtop で確認します。特定のプロセスが異常に消費していることが多いです。

よくある疑問

Linuxでメモリ使用率を確認するにはどうするか

free -h を実行して available 列を確認するのが最も簡単な方法です。使用率の計算は (total - available) / total × 100 で求められます。

freeのavailableは何を意味するか

新しいアプリケーションが実際に使えるメモリの推定量です。free(未割り当て)に加え、解放可能な buff/cache も含めた値で、実用上の空きメモリとして参照します。

buff/cacheが多いのは問題か

問題ありません。Linuxは空きメモリをキャッシュとして積極的に活用します。available が十分にあれば、buff/cacheがどれだけ多くても正常な動作です。

メモリ使用率はどう計算するか

(total - available) / total * 100 で計算します。used / total を使うと buff/cache を含んだ値になり、実際より高い使用率が表示されます。

どのプロセスがメモリを使っているか確認するにはどうするか

ps aux --sort=-%mem | head -10

または top を起動して Shift + M でメモリ使用量順にソートします。

まとめ

Linuxでメモリ使用率を確認するポイントをまとめます。

  • free -h で素早く確認し、availableを見る
  • 使用率の正確な計算は (total - available) / total × 100
  • buff/cache が多くても問題なし。available が少ない場合に注意する
  • Swapが継続使用されていたらメモリ不足の兆候
  • プロセス別確認は ps aux --sort=-%mem | head または top
  • 詳細調査には /proc/meminfo を使う

関連記事:Linuxコマンド完全ガイド:初心者が最初に覚えるべきコマンド一覧と使い方

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント