thumbnail

メモリスワップで一時的なメモリ不足を解消する

2022/01/08

プログラムを動かすにはメモリは十分足りてるけど、プログラムのbuild, compilepackageinstallにメモリが足りないっていうときに使える方法です。

サーバー代節約のためにメモリの少ないクラウドサーバーを使用しているときなどにたまに使います。

※ スワップファイルを使って一時的にメモリ領域の不足分を補完するだけなので、常時動作するプログラムのメモリ不足を解消するものではないことにご注意ください(プログラムのパフォーマンスが著しく低下する恐れがあります)

方法

現在のスワップ領域の確認

以下のコマンドで現在使用可能なスワップ領域の確認ができます。

$ sudo swapon --show

すでにスワップ領域が確保されている場合は以下のように出力されます。

NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

何も出力されなければ、現在使用可能なスワップ領域がないということなので、次の手順でスワップ領域を確保しましょう。

スワップファイルの作成

スワップ領域として使用したいサイズのファイルを作成します。 特定のサイズのファイル作成にはfallocateコマンドが有用です。

$ sudo fallocate -l 1G /swapfile

上記のコマンドを実行することで1Gサイズののファイルが作成されます。

rootユーザーのみがread・writeできるようにファイルのアクセス権限を変更します。

$ sudo chmod 600 /swapfile

スワップファイルの有効化

次に上で作成したファイルを以下のコマンドでシステムにスワップファイルとして認識させます。

$ sudo mkswap /swapfile

以下のコマンドでスワップファイルを有効化しシステムが使用できるようにします。

$ sudo swapon /swapfile

再度、sudo swapon --showでスワップが使用可能であることが確認できたら準備完了です。 メモリ不足で失敗したコマンドを実行してみてください。

それでもメモリ不足で失敗するようでしたら、スワップファイルのサイズを増やして、スワップ領域を拡大させましょう。

スワップの無効化

スワップ領域が必要なくなった場合は以下のコマンドでスワップを無効化することができます。

$ sudo swapoff /swapfile

sudo swapon --showで何も表示されてなければOKです。 必要のなくなったスワップファイルも削除しましょう。

$ sudo rm /swapfile
author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

Profile

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

© 2022 mitsuru takahashi