Linuxでシステムのメモリ状況を確認する際、「free
コマンド」や「top
コマンド」がよく使われますが、より詳細で正確な情報を取得したいときに役立つのが cat /proc/meminfo
です。
このコマンドは、カーネルが保持しているメモリに関するリアルタイムの情報を表示し、物理メモリの使用状況やキャッシュの状態、スワップ領域などを具体的に把握できます。この記事では、/proc/meminfo
の出力内容をひとつひとつ解説しながら、実際にどのように読み解くか、またトラブルシューティングやパフォーマンス改善にどう活かすかを詳しく紹介していきます。
/proc/meminfo
は、Linuxカーネルが管理する仮想ファイルの1つで、メモリに関する統計情報が格納されています。このファイルは実際のディスクファイルではなく、カーネルからリアルタイムで生成されており、常に最新のメモリ状態を表示します。
このファイルを表示するには以下のようなシンプルなコマンドを実行します。
cat /proc/meminfo
出力は非常に詳細で、1行ごとに異なるメモリ項目とその使用量(kB単位)が表示されます。これにより、システムのメモリが「どのように使われているか」を正確に知ることができます。
/proc/meminfo
を実行すると、多くの行が表示されます。主な項目の意味を以下に説明します。
MemTotal: 16384000 kB
システムに搭載されている物理メモリの総量です。単位はキロバイト(kB)で、上記の例では約16GBとなります。
MemFree: 1234567 kB
完全に使用されていないメモリの量を示します。つまり、何もキャッシュにも使われておらず、すぐに使用できるメモリです。
Buffers: 123456 kB
Cached: 2345678 kB
SwapTotal: 2097148 kB
SwapFree: 1048576 kB
スワップ領域の総量と、未使用のスワップ領域です。スワップは、物理メモリが足りない場合にディスク上に退避させる仕組みですが、頻繁に使用されているとパフォーマンスが低下するため注意が必要です。
メモリの実際の使用状況を正確に把握するには、「MemFree」だけでは不十分です。Linuxでは未使用メモリをキャッシュとして積極的に活用しているため、以下の計算が重要です。
実質的な空きメモリ = MemFree + Buffers + Cached
この合計を出すことで、システムが再利用可能なメモリ量を知ることができます。たとえば、次のような出力がある場合:
MemFree: 500000 kB
Buffers: 200000 kB
Cached: 1000000 kB
→ 実質的な空きメモリは 1,700,000 kB(約1.7GB)ということになります。
メモリ不足によるシステム不調の原因を調査する際にも /proc/meminfo
は非常に有効です。
スワップの使用量(SwapTotal – SwapFree)が多い場合、物理メモリが足りておらず、ディスクI/Oの増加が原因で処理が遅れている可能性があります。この場合は、不要なサービスを停止したり、メモリを増設することが必要です。
ファイルシステムのキャッシュが増えすぎている場合、一時的にフラッシュすることで解決できる場合があります。次のコマンドでキャッシュのクリアが可能です。
sync; echo 3 > /proc/sys/vm/drop_caches
ただし、これは応急処置であり、常時実行すべきではありません。
/proc/meminfo
単体でも有用ですが、以下のコマンドと併用することで、より深い分析が可能になります。
メモリの概要をMB単位で確認できます。キャッシュやスワップも一目でわかるため、日常的な確認にはこちらが便利です。
free -m
システムの仮想メモリ状況やプロセス、CPUの状態などを総合的に確認できます。監視やパフォーマンス分析に有効です。
vmstat 1 5
シェルスクリプトから /proc/meminfo
を読み取ることで、自動監視やアラート設定も可能です。たとえば、空きメモリが少ない場合に通知を飛ばす例:
#!/bin/bash
free_mem=$(grep MemFree /proc/meminfo | awk '{print $2}')
if [ "$free_mem" -lt 200000 ]; then
echo "メモリ不足の可能性あり" | mail -s "Memory Alert" you@example.com
fi
このように、監視ツールを自作する際にも非常に役立ちます。
cat /proc/meminfo
は、Linuxシステムのメモリ使用状況を詳細に把握するための強力なツールです。表示される情報は多岐にわたりますが、それぞれの項目の意味を理解することで、メモリ不足の兆候を早期に察知したり、適切な対処を講じることができます。
単なるメモリ使用量の確認だけでなく、キャッシュやスワップの状態を通じてシステム全体の健全性を評価できるこのコマンド。Linuxユーザーにとっては、ぜひ知っておきたい基礎知識のひとつと言えるでしょう。