Linux free コマンド:システムメモリの監視

LinuxBeginner
オンラインで実践に進む

はじめに

Linux の free コマンドに関する実験へようこそ。この実験では、free コマンドを使用してシステムメモリの使用状況を監視および分析する方法を学びます。このスキルは、システムのパフォーマンスを最適化し、メモリ関連のトラブルシューティングを行う必要があるシステム管理者や開発者にとって非常に重要です。

あなたは、稼働中の Web サーバーのメモリ使用状況を監視する任務を任された新人システム管理者だと想像してください。free コマンドはこのタスクにおける主要なツールとなり、現在のメモリ状態を迅速に評価し、システムのパフォーマンスに影響が出る前に潜在的な問題を特定するのに役立ちます。

free コマンドの基本操作

まずは、最もシンプルな形式で free コマンドを使用してみましょう。これにより、システムのメモリ使用状況の概要を把握できます。

まず、まだ開いていない場合はターミナルを開きます。次に、以下のコマンドを実行してください。

free

以下のような出力が表示されるはずです。

              total        used        free      shared  buff/cache   available
Mem:        8167004     2524956     3300280      658636     2341768     4657560
Swap:       2097152           0     2097152

この出力は、システムのメモリ使用状況のスナップショットを示しています。各列の意味を詳しく見ていきましょう。

  • total: 物理 RAM とスワップ(仮想メモリ)領域の合計容量。
  • used: 現在使用中の RAM 容量。
  • free: まったく使用されていない RAM 容量。
  • shared: tmpfs(一時ファイルシステム)などで使用されている RAM 容量。
  • buff/cache: バッファとキャッシュに使用されている RAM 容量。
  • available: 新しいアプリケーションを起動するために利用可能と推定されるメモリ容量。

出力は以下の 2 行に分かれています。

  • Mem: 物理 RAM に関する情報。
  • Swap: スワップ領域(仮想メモリ)に関する情報。

デフォルトでは、すべての値はバイト単位で表示されます。

人間に読みやすい形式でのメモリ情報の表示

free コマンドのデフォルト出力は正確ですが、一目で把握するのは難しい場合があります。そこで、-h オプションを使用して、より人間に読みやすい形式(ヒューマンリーダブル)で情報を表示してみましょう。

以下のコマンドを実行してください。

free -h

すると、以下のような出力が表示されます。

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

-h オプション(human-readable の略)は、数値を自動的に適切な大きさに調整し、単位(ギガバイトなら G、メガバイトなら M など)を付与します。これにより、システムのメモリ使用状況を一瞬で把握しやすくなります。

値が Gi(ギビバイト)や Mi(メビバイト)といった単位で表示されていることに注目してください。これらは 2 進数に基づいた単位で、1 Gi = 1024 Mi となります。これはコンピュータがメモリを測定する際の標準的な方法です。

メガバイト単位でのメモリ情報の表示

特定の単位でメモリ情報を確認したい場合もあります。ここでは、-m オプションを使用して情報をメガバイト単位で表示してみましょう。

以下のコマンドを実行してください。

free -m

出力は以下のようになります。

              total        used        free      shared  buff/cache   available
Mem:           7975        2466        3222         642        2286        4548
Swap:          2047           0        2047

-m オプションを使用すると、free コマンドはすべての値を強制的にメガバイト単位で表示します。これは、-h オプションよりも正確な数値が必要でありながら、読みやすさも維持したい場合に便利です。

なお、これらは正確にはメビバイト(MiB)であり、1 MiB = 1,048,576 バイトです。1 MB = 1,000,000 バイトのメガバイト(MB)とは異なりますが、実務上はほぼ同じ意味で使われることが多いです。

free コマンドによる継続的な監視

実際の運用現場では、メモリ使用状況を時間の経過とともに監視する必要があることがよくあります。free コマンドでは、-s(seconds)オプションを使用することで、一定の間隔で表示を更新できます。

3 秒ごとにメモリ使用状況を監視し、合計 5 回更新してみましょう。

free -h -s 3 -c 5

このコマンドでは、いくつかのオプションを組み合わせています。

  • -h: 人間に読みやすい形式で表示。
  • -s 3: 3 秒ごとに更新。
  • -c 5: 5 回更新した後に停止。

以下のように、3 秒ごとに更新される出力が表示されるはずです。

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

...

この継続的な監視により、メモリ使用量が時間の経過とともにどのように変化するかを観察できます。これは、メモリリークの特定や、特定のアプリケーションのメモリ使用パターンの把握に特に役立ちます。

5 回の更新が終わる前にコマンドを停止したい場合は、Ctrl+C を押してください。

総メモリ使用量の表示

デフォルトでは、free コマンドはバッファとキャッシュを分けた状態でメモリ使用状況を表示します。しかし、バッファやキャッシュを含めたシステム全体の合計使用量を確認したい場合もあります。その場合は、-t オプションを使用します。

以下のコマンドを実行してください。

free -h -t

出力は以下のようになります。

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi
Total:        9.8Gi       2.4Gi       5.1Gi

-t オプションを使用すると、一番下に「Total」行が追加され、物理メモリとスワップ領域の使用量が合算されます。これにより、物理 RAM とスワップ領域の両方を含む、システム全体の総メモリ容量と使用状況を素早く把握できます。

この出力の見方は以下の通りです。

  • Mem: 行は、物理 RAM の使用状況を示します。
  • Swap: 行は、スワップ領域の使用状況を示します。
  • Total: 行は、物理 RAM とスワップ領域の合計値を示します。

この合計表示は、システム全体のメモリキャパシティと負荷を一目で理解したいときに非常に便利です。

まとめ

お疲れ様でした!free コマンドを使用してシステムメモリを監視する実験を完了しました。学んだ内容を振り返ってみましょう。

  1. メモリ情報を表示する free コマンドの基本操作。
  2. メモリを読みやすい形式で表示する -h オプション。
  3. メモリ情報をメガバイト単位で表示する -m オプション。
  4. -s および -c オプションを使用したメモリ使用状況の継続的な監視。
  5. -t オプションを使用して、スワップを含む総メモリ使用量を表示する方法。

これらのスキルは、システムリソースの監視や管理、特にパフォーマンスの最適化やメモリ関連のトラブルシューティングが必要な場面で非常に役立ちます。

この実験では紹介しきれなかった、その他の free コマンドのオプションもいくつか紹介します。

  • -b: メモリ量をバイト単位で表示。
  • -k: メモリ量をキロバイト単位で表示。
  • -g: メモリ量をギガバイト単位で表示。
  • -w: ワイド出力形式を使用(一部の環境で詳細表示)。
  • -s [秒数]: 指定した秒数ごとに表示を更新。
  • --si: 1024 の代わりに 1000 の累乗(SI 単位系)を使用。

システムのパフォーマンスと安定性を維持するためには、効果的なメモリ管理が不可欠です。free コマンドによる定期的な監視を習慣づけることで、メモリ関連の問題がシステムに影響を与える前に検知し、防止できるようになります。