【Linux】メモリ使用量とスワップ管理について

この記事では、Linuxにおけるメモリ管理の概要、freeコマンドを使用したメモリ使用量の監視方法について確認します。また、スワップファイルの作成と有効化、スワップ使用量についても確認します。
スポンサーリンク

メモリ使用量の監視

サーバーが使用しているメモリの量を確認するには、「free」コマンドを使用します。このコマンドで、現在使用されているメモリの量が確認できます。freeコマンドを何もオプション設定せずに使用した場合、出力はキロバイト単位で表示されます。
$ free

出力をメガバイト単位で表示するには、-mオプションをつけます。キロバイト単位より、見やすいと思います。
$ free -m

  • total:システムに搭載されているメモリの総量
  • used: 使用されているメモリの量(used = total – free – buffers/cache)
  • free::全く使用されていないメモリーの量。
  • shared:tmpfs(temporary file system) で使われる共有メモリ量。
  • buff/cache:システムがディスクからのデータをキャッシュするために使用するメモリ量。
  • available:システムがスワップを開始することなく、プログラムによって使用できるメモリの量。
上の「free -m」の出力結果を一見すると、メモリは1062MB空いているように見えまずが、実際の空きメモリ量は「available」の下にある1571MBです。
available」の下に表示されているメモリ量は、システムによるキャッシュも含まれています。アプリケーションが実行するためにメモリを必要とするとき、カーネルはこのキャッシュを解放します。
Linuxは、未使用のメモリを無駄にしないよう、未使用分のメモリをファイルシステムキャッシュに使用します。このキャッシュは、ストレージ・デバイスに書き込む必要のあるデータを一時的に保存します。メモリからデータを取り出す方が、毎回ストレージからデータを読み込むよりも高速のため、処理速度が向上します。
このように、freeコマンドの出力を監視することで、システムがメモリ不足に陥っているかどうか、確認することができます。
スポンサーリンク

スワップの管理

スワップとは、物理メモリに収まりきらないデータを一時的に保存するために、OSが使用するハードディスク上のスペースのことです。スワップがあることで、メモリが不足した場合でも、システムは継続して動作することができます。
もともと、2GBのスワップファイルが作成されています。「free -m」 で確認します。

現在のスワップファイルを「/proc/swaps」より確認します。/swap.imgという2GBのスワップファイルが確認できます。

ここで、スワップ拡張のため、追加で、4GBのスワップファイルを作成します。
dd」コマンドで希望するサイズの空のファイルを作成します。下記はddコマンドを使用して、4GBのスワップファイルを作成しています。
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

  • dd: ブロックデバイスからデータをコピーするコマンド
  • if=/dev/zero: 入力ファイルを指定するパラメータで/dev/zeroを指定。この特殊なファイルは、無限のゼロ(0)バイトを生成するデバイスです。
  • of=/swapfile: 出力ファイルを指定するパラメータで、/swapfileという名前のファイルに書き込みます。このファイルをスワップ用として、物理メモリが不足した場合に使用される仮想メモリの一部であり、このファイルに書き込むようにします。
  • bs=1M: 一度に読み込むブロックサイズを指定するパラメータ。このコマンドでは、1MBのブロックサイズを指定しています。ブロックサイズを大きくすると、ddコマンドがより効率的に動作します。
  • count=4096: 書き込むブロック数を指定するパラメータ。このコマンドでは、4096ブロックを書き込むよう指定しています。1MBのブロックサイズであるため、これは4GBのファイルサイズに相当します。このパラメーターによって、スワップファイルのサイズが決定されます。
作成したファイルにパーミッションを設定し、所有者のみに読み取りと書き込みの権限を与えます。
$ sudo chmod 0600 /swapfile
次に、「mkswap」コマンドを使用して、そのファイルをスワップ領域としてフォーマットします。
$ sudo mkswap /swapfile

OS再起動後も引き続きスワップを有効にするため、/etc/fstab ファイルに下記エントリーを追加します。
/swapfile  none  swap  sw  0 0

最後に、「swapon」コマンドでスワップファイルを有効にします。
$ sudo swapon -a
free -m」を確認すると、スワップ領域が6GBに拡張されています。

/proc/swaps」より /swapfile がスワップとして追加されていることが確認できます。

スワップファイルが有効化されると、メモリ不足になったときにシステムがスワップファイルの使用を開始します。パフォーマンス低下などの場合、過剰なスワップが発生していないか、「free」コマンドを使用してスワップ使用量を監視することができます。

コメント