Linuxでメモリ使用率を確認するには、free -h コマンドが最もよく使われます。ただし、free の出力を正しく読むには available と buff/cache の意味を理解することが重要です。
この記事では、free コマンドの見方から、メモリ使用率の計算方法、top や /proc/meminfo との使い分けまでまとめて解説します。
Linuxでメモリ使用率を確認する代表コマンド
Linuxのメモリ使用率を確認する主なコマンドは以下の3つです。
# 概要を素早く確認する
free -h
# プロセス別の使用状況を含めてリアルタイム確認
top
# 詳細な数値を確認する
cat /proc/meminfo
日常的には free -h で十分です。詳細な調査が必要な場合は /proc/meminfo や top を使います。
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=-%mem や top で確認します。特定のプロセスが異常に消費していることが多いです。
よくある疑問
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を使う

コメント