物理メモリ1.5GBのFreeBSD 11.1-RELEASE環境で、16GBのスワップを追加したら以下のメッセージが表示された。
warning: total configured swap (4194304 pages) exceeds maximum recommended amount (2994784 pages) warning: increase kern.maxswzone or reduce amount of swap.
カーネルが扱えるサイズを超えるスワップを追加すると出るそうで。本事例だと、最大スワップサイズは2994784ページで、1ページ=4KiBなので約11.4GiBとなる。
この値はどこで決まるかと言えば、warningの2つ目で示されているkern.maxswzone
カーネルパラメータである。スワップ管理用メモリの最大バイト数を指定するパラメータで、11.1Rではスワップ約200MiBにつき1MiBが必要とのこと。特に指定しなければ、物理メモリの8倍のスワップを扱うのに十分な容量が確保される。
実際に確保された量は恐らくvm.swzone
パラメータの値。本事例では53904384バイトとなっており、計算するとwarning中の最大スワップサイズと概ね一致する。
というわけで、/boot/loader.conf
に次の一行を追加してみた。
kern.maxswzone="75464704"
値はまー適当。11.4GiBで53904384バイト必要なんだから、16GBなら1.4倍して一応4KiB単位に揃えた感じ。
これで再起動すればOK!
……のハズだったんだけど、なぜか値が反映されないの(´・ω・`)。kern.maxswzone
には反映されるんだけど、肝心のvm.swzone
が変わってない。警告も相変わらず出る。kern.maxswzone
は名前の通り最大値を制限するものであって、スワップの最大サイズは物理メモリの8倍という制限は超えられないって事なのかしら…?これ以上はソース見ないとわからんな。