Raspbianのスワップ領域を拡張する

Raspberry Pi 3 Model B
OS: Raspbian stretch lite November 2017
MySQL 5.7.21

OSにRaspbianを導入したRaspberry Pi 3でMySQLのビルドをこなしていたら道半ばで打ち切りの憂き目に遭った。エラーメッセージによればcc1plusが殺害されているようである。

$ make
(snip)
[ 50%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc_setops.cc.o
c++: internal compiler error: Killed (program cc1plus)

dmesgから手がかりを探ると、どうもOut of memory killerによってプロセスが刈り取られた模様である。Raspberry Pi 3 Model Bのメモリ搭載量1GBに対してその8割を超えるメモリを消費すればお咎めの対象となるのも宜なるかなというところである。

$ dmesg
(snip)
[16075.666040] Out of memory: Kill process 11885 (cc1plus) score 853 or sacrifice child
[16075.666059] Killed process 11885 (cc1plus) total-vm:919780kB, anon-rss:842300kB, file-rss:0kB, shmem-rss:0kB
[16076.103693] oom_reaper: reaped process 11885 (cc1plus), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

ビルドに費やした途方もない待ち時間がふいになり誠に遺憾である。さりとてOOM-Killerを無効にするとメモリの払底を差し止められずにシステムが混乱に陥る惧れがある。だからこの度はスワップ領域を拡張するのが適当におもう。

実際Raspbianのデフォルトではスワップ領域に100MBの割り当てしかなく、近頃のMySQLをビルドするには到底間に合わない。これを2GBへ引き上げる。Raspbianは/etc/dphys-swapfileCONF_SWAPSIZEでスワップ領域を設定するようである。

$ sudo vi /etc/dphys-swapfile
#CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048

$ sudo dphys-swapfile install
want /var/swap=2048MByte, checking existing: deleting wrong size file (104857600), generating swapfile ... of 2048MBytes

$ sudo dphys-swapfile swapon

これでスワップ領域が2GBに拡張された。

$ free -m
          total       used        free      shared  buff/cache   available
Mem:        927         76         455          12         395         787
Swap:      2047          0        2047

改めてMySQLのビルドを試みたところ450分程度を費やして恙無く完了した。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください