swap(仮想メモリ)のチューニング

swap(仮想メモリ)のチューニング
swap(仮想メモリ)のチューニング

本番で動くRaspberry Pi4のメモリは、各種チューニングでそれなりにメモリを使用します。

負荷が高い状態で(幸せな状態ですが)、保守作業をしても更なる遅延が発生しないようswapファイルを拡張します。

WordPress専用のサーバとして使用する場合、スペックを超える沢山のアクセスには、接続拒否をしてメモリの使い過ぎを押さえる事も可能です。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(仮想メモリ)のサイズを変更

一般的にswapファイルのサイズは、サーバに搭載されているメモリと同じとするのが通説です。

ちゃんとチューニングをしているサーバであれば、swapファイルに大きなサイズを指定する必要はありません。

搭載メモリが4GBのRaspberry Pi4の場合、1GBもあれば保守作業が十分行えると考えられswapファイルを1024MB(1GB)に拡張します。

手順は

  1. swap(仮想メモリ)サービスの停止
  2. 設定ファイルの変更
  3. swap(仮想メモリ)サービスの起動
  4. 状態の確認

で進めます。

swap(仮想サービス)サービスの停止

下記コマンドでswap(仮想メモリ)サービスを停止します。

$ sudo swapoff --all
$ sudo systemctl stop dphys-swapfile

設定ファイルの変更

下記コマンドで、設定ファイルの内容を変更します。

$ sudo vi /etc/dphys-swapfile
# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
#   use under either modified/non-advertising BSD or GPL license

# this file is sourced with . so full normal sh syntax applies

# the default settings are added as commented out CONF_*=* lines


# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=1024

# set size to computed value, this times RAM size, dynamically adapts,
#   guarantees that there is enough swap without wasting disk space on excess
#CONF_SWAPFACTOR=2

# restrict size (computed and absolute!) to maximally this limit
#   can be set to empty for no limit, but beware of filled partitions!
#   this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
#   but is also sensible on 64bit to prevent filling /var or even / partition
#CONF_MAXSWAP=2048
~

赤字の通り1024MB(1GB)に変更します。

swap(仮想メモリ)サービスの起動

下記コマンドでサービスを起動します。

$ 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 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
タイトルとURLをコピーしました