久しぶりのラズベリーパイネタです。

これまであまり意識することなかったんですが、ラズパイ(Raspbian) をデフォルトのまま使っている時のスワップサイズって 100MB しかないんですね。。
2019011001


ラズパイのメインメモリは 1GB 固定です。サーバー用途メインで、あまり重い作業をしなければこれで足りるのかもしれませんが、デスクトップ用途で使ってブラウザでタブをたくさん開いて・・・という使い方をしていると、結構な確率でメモリ不足になると思います。 というわけで、スワップファイル容量を変更する手順を調べたので以下に紹介します。

Raspbian の場合、スワップファイル容量は /etc/dphys-swapfile というテキストファイルで管理されています。スワップファイル容量を変更するにはこのファイルをテキストエディタで開いて、CONF_SWAPSIZE という変数の値を(メガバイト単位で)指定します。例えば以下の例では 2GB に指定しています:
CONF_SWAPFILE=2048

ただし、2GB 以上の値を指定する場合は同ファイル内にある CONF_MAXSWAP の値も変更する必要があります(32 bit カーネルを考慮しているせいか、この値を変更せずに CONF_SWAPFILE の値だけを 2048 より大きな値に変更してもスワップファイルサイズは 2048 に設定されてしまうようです)。例えば 4GB に設定する場合は以下のようにします:
CONF_SWAPFILE=4096
CONF_MAXSWAP=4096

設定変更後に以下のコマンドで dphys-swapfile を再起動すると、スワップファイルのサイズが変更されます:
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl start dphys-swapfile

2019011002


当たり前ですがスワップファイルはマイクロ SD カード内に作られるため、マイクロ SD カードの容量とも相談して設定する必要があります。またあまり頻繁にスワップが発生するような使い方だと、ただでさえストレージとしては比較的寿命の短いマイクロ SD カードの劣化を意識する必要が出てくるかもしれません。

その場合はラズパイに USB メモリを挿してマウントし、上記の /etc/dphys-swapfile ファイル内の CONF_SWAPFILE でスワップファイルを USB メモリ内に作成するようにしてマイクロ SD カードから退避させる、という方法もあるようです(未確認)。