Raspberry Pi OSのswap(仮想メモリ)サービスの起動、停止、swapファイルサイズ変更等運用方法を掲載します。
現状の確認
普通にインストールすると、swap(仮想メモリ)サービスが起動します。
$ sudo swapon -s
Filename Type Size Used Priority
/var/swap file 102396 0 -2
$ sudo free -h
total used free shared buff/cache available
Mem: 3.7Gi 173Mi 3.3Gi 6.0Mi 211Mi 3.5Gi
Swap: 99Mi 0B 99Mi
/var/swap 102396、スワップファイルが約100MB確保されています。
Swap:99Mi なので仮想メモリとして99MBまで使用できます。
もしメモリが足らなくなると、99MBまでメモリを拡張してくれます。
swap(仮想メモリ)サービスの停止
swap(仮想メモリ)サービスを停止および非活性化する方法を説明します。
$ sudo swapoff --all
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile
Synchronizing state of dphys-swapfile.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable dphys-swapfile
Removed /etc/systemd/system/multi-user.target.wants/dphys-swapfile.service.
サービスの状態を確認します。
$ systemctl status dphys-swapfile
● dphys-swapfile.service - dphys-swapfile - set up, mount/unmount, and delete a swap file
Loaded: loaded (/lib/systemd/system/dphys-swapfile.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:dphys-swapfile(8)
Nov 27 15:02:39 raspberrypi systemd[1]: Starting dphys-swapfile - set up, mount/unmount, and delete a swap file...
Nov 27 15:02:39 raspberrypi dphys-swapfile[350]: want /var/swap=100MByte, checking existing: keeping it
Nov 27 15:02:39 raspberrypi systemd[1]: Finished dphys-swapfile - set up, mount/unmount, and delete a swap file.
Nov 27 15:14:56 raspberrypi systemd[1]: Stopping dphys-swapfile - set up, mount/unmount, and delete a swap file...
Nov 27 15:14:56 raspberrypi systemd[1]: dphys-swapfile.service: Succeeded.
Nov 27 15:14:56 raspberrypi systemd[1]: Stopped dphys-swapfile - set up, mount/unmount, and delete a swap file.
赤字の通りActive:inactive swap(仮想メモリ)サービスが停止しています。
下記のコマンドで、swap(仮想メモリ)の停止が確認できます。
$ sudo swapon -s
$ sudo sudo free -h
total used free shared buff/cache available
Mem: 3.7Gi 174Mi 3.3Gi 6.0Mi 212Mi 3.5Gi
Swap: 0B 0B 0B
赤字の通りswap:の横の数字が0となっているのでOKです。
これで、Raspberry Pi4を再起動してもswap(仮想メモリ)サービスは有効となりません。
swapファイルのサイズ変更
一般的にswapファイルのサイズは、サーバに搭載されているメモリと同じとするのが通説です。
ちゃんとチューニングをしているサーバであれば、swapファイルに大きなサイズを指定する必要はありません。
前章の通りインストール直後のswapファイルは100MBしか確保されていません。もし100MBを超える仮想メモリが必要となった時、自動的にswapファイルが拡張されていくのですが、swapファイルを拡張するために更なる時間遅延が発生します。
そこで、swapファイルをあらかじめ想定のサイズまで拡張しておきます。
搭載メモリが4GBのRaspberry Pi4の場合、1GBもあれば保守作業が十分行えると考えられswapファイルを1024MB(1GB)に拡張します。
swap(仮想メモリ)サービスを停止している状態で設定ファイルを変更します。
$ sudo vi /etc/dphys-swapfile
設定ファイルに、CONF_SWAPSIZE=100と記述が有りますので、CONF_SWAPSIZE=1024に変更します。
この後の章で、swap(仮想メモリ)サービスを起動することで、指定した1024MB(1GB)のswapファイルが作成されます。
swap(仮想メモリ)サービスの起動
swap(仮想メモリ)サービスの活性化と起動します。
$ sudo systemctl enable dphys-swapfile
Synchronizing state of dphys-swapfile.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable dphys-swapfile
Created symlink /etc/systemd/system/multi-user.target.wants/dphys-swapfile.service → /lib/systemd/system/dphys-swapfile.service.
$ sudo systemctl start dphys-swapfile
実行の結果を確認します。
$ systemctl status dphys-swapfile
● dphys-swapfile.service - dphys-swapfile - set up, mount/unmount, and delete a swap file
Loaded: loaded (/lib/systemd/system/dphys-swapfile.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2022-11-27 16:12:44 JST; 4min 31s ago
Docs: man:dphys-swapfile(8)
Process: 1122 ExecStart=/sbin/dphys-swapfile setup (code=exited, status=0/SUCCESS)
Process: 1165 ExecStart=/sbin/dphys-swapfile swapon (code=exited, status=0/SUCCESS)
Main PID: 1165 (code=exited, status=0/SUCCESS)
CPU: 137ms
Nov 27 16:12:44 raspberrypi systemd[1]: Starting dphys-swapfile - set up, mount/unmount, and delete a swap file...
Nov 27 16:12:44 raspberrypi dphys-swapfile[1122]: want /var/swap=1024MByte, checking existing: deleting wrong size file (104857600), generating swapfile ... o>
Nov 27 16:12:44 raspberrypi systemd[1]: Finished dphys-swapfile - set up, mount/unmount, and delete a swap file.
前章で設定した1024MByte(1GB)でswapファイルが作成されactiveになりました。
更に下記コマンド、設定どおり仮想メモリ1GBで起動している事を確認できます。
$ sudo swapon -s
Filename Type Size Used Priority
/var/swap file 1048572 0 -2
$ sudo sudo free -h
total used free shared buff/cache available
Mem: 3.7Gi 173Mi 3.2Gi 6.0Mi 297Mi 3.5Gi
Swap: 1.0Gi 0B 1.0Gi