freeコマンドでメモリの使用状況を確認する方法

先生

freeコマンドでメモリ使用量を把握して、快適なシステム運用を実現しましょう。

freeコマンドとは?メモリ使用状況を確認する基本

LinuxやmacOSなどのUnix系OSで、freeコマンドはメモリの使用状況をリアルタイムで確認するための基本的なコマンドです。サーバーのパフォーマンス監視や、アプリケーションのメモリリークの調査など、様々な場面で役立ちます。この記事では、freeコマンドの使い方をわかりやすく解説し、メモリに関する理解を深めることを目指します。

freeコマンドを実行すると、システム全体のメモリの使用量、空き容量、バッファ、キャッシュに関する情報が表示されます。これらの情報を理解することで、システムのメモリがどのように利用されているかを把握し、必要に応じてメモリの増設やアプリケーションの最適化などの対策を講じることができます。

freeコマンドは、特別な権限なしに実行可能です。ターミナルを開き、freeと入力してEnterキーを押すだけで、メモリ情報が表示されます。

freeコマンドの基本的な使い方とオプション

freeコマンドの基本的な使い方は非常にシンプルです。ターミナルでfreeと入力するだけです。

free

上記コマンドを実行すると、以下のような情報が表示されます。


              total        used        free      shared  buff/cache   available
Mem:        8192        2048        4096         128        2048        5120
Swap:       2048          0        2048

各項目の意味は以下の通りです。

* total: システムに搭載されているメモリの総量

* used: 現在使用中のメモリ量

* free: 空きメモリ量

* shared: 共有メモリ量

* buff/cache: バッファおよびキャッシュとして使用されているメモリ量

* available: アプリケーションがすぐに利用できるメモリ量(buff/cacheを含む)

freeコマンドには、いくつかの便利なオプションがあります。よく使われるオプションをいくつか紹介します。

* -h, –human: 数値を人間が読みやすい形式(K, M, Gなど)で表示します。

free -h

* -m, –mega: 数値をメガバイト単位で表示します。

free -m

* -g, –giga: 数値をギガバイト単位で表示します。

free -g

* -s [秒], –seconds [秒]: 指定された秒数ごとに定期的に情報を更新します。

free -s 5

* -c [回数], –count [回数]: 指定された回数だけ情報を表示して終了します。-sオプションと組み合わせて使用します。

free -s 5 -c 3

freeコマンドの出力結果を詳しく理解する

freeコマンドの出力結果を正しく理解することで、システムのメモリ状況をより深く把握することができます。特に重要なのは、usedfreebuff/cacheavailableの各項目の関係性です。

usedは現在使用中のメモリ量を示しますが、これは必ずしもアプリケーションが直接使用しているメモリ量だけではありません。OSがキャッシュやバッファとして使用しているメモリも含まれます。

buff/cacheは、ディスクへのアクセスを高速化するために使用されるメモリ領域です。これらのメモリは、必要に応じてアプリケーションに解放されるため、空きメモリとみなすことができます。

availableは、アプリケーションがすぐに利用できるメモリ量を示します。これは、freebuff/cacheの一部を加えた値に相当します。アプリケーションのパフォーマンスを評価する際には、availableの値に着目することが重要です。

Swap領域は、物理メモリが不足した場合に、ディスクの一部を仮想メモリとして使用する領域です。Swap領域の使用量が増加すると、システムのパフォーマンスが低下する可能性があります。Swap領域の使用状況もfreeコマンドで確認することができます。

Swap領域が常に0に近い状態が理想的ですが、システムの負荷状況によっては一時的にSwap領域が使用されることもあります。ただし、Swap領域の使用量が慢性的に高い場合は、メモリの増設を検討する必要があります。

freeコマンドを使ったメモリ監視の応用例

freeコマンドは、単にメモリの使用状況を表示するだけでなく、様々な応用が可能です。例えば、スクリプトと組み合わせて、メモリの使用量が一定の閾値を超えた場合にアラートを出すように設定したり、ログファイルに定期的にメモリ情報を記録して、過去のメモリ使用状況を分析したりすることができます。


#!/bin/bash

THRESHOLD=90  # 使用率の閾値(%)

USED_PERCENT=$(( $(free | awk 'NR==2{printf "%d", $3*100/$2}') ))

if [ $USED_PERCENT -gt $THRESHOLD ]; then
  echo "Warning: Memory usage is above ${THRESHOLD}% (${USED_PERCENT}%)"
  # ここにアラートを出す処理を追加する(例:メール送信)
fi

上記のスクリプトは、メモリの使用率が90%を超えた場合に警告メッセージを表示する例です。このスクリプトをcronなどで定期的に実行することで、メモリ不足によるシステムダウンを未然に防ぐことができます。

また、vmstatコマンドやtopコマンドなど、他のシステム監視ツールと組み合わせることで、より詳細なメモリ使用状況を把握することができます。vmstatコマンドは、CPU、メモリ、ディスクI/Oなどのシステム全体のパフォーマンス情報を表示します。topコマンドは、CPU使用率の高いプロセスやメモリ使用量の多いプロセスをリアルタイムで表示します。

参考リンク

まとめ

freeコマンドは、LinuxやmacOSでメモリの使用状況を簡単に確認できる便利なコマンドです。基本的な使い方から、オプションの活用、出力結果の理解、応用例まで、この記事で解説した内容を参考に、freeコマンドを使いこなして、快適なシステム運用を実現してください。メモリはシステムのパフォーマンスに大きく影響するため、常に適切な状態に保つことが重要です。