Raspberry Pi 3 Model Bには1GBのSDRAMが搭載されていますが、ブラウザのタブをいくつも開いた状態で数GBのファイルを圧縮/展開するときなどは、メモリーが不足してフリーズしてしまうことがよくあります。
しかも、OS ( Raspbian ) は、microSDカードを起動ドライブとしていることから、メモリー不足時の一時退避先であるswap領域が既定で100MBしか設定されていません。
そこで、起動ドライブとは別のswap領域専用のデバイスをマウントすることで、パフォーマンスがアップする可能性があります。
一般的にswap領域のサイズは、物理メモリーの2倍程度とされているので、今回はswap領域専用のデバイスとして、2GBのUSBメモリーを用意しました。
現状のswap領域確認
USBメモリーのフォーマット
Raspberry PiのUSB端子にUSBメモリーを接続すると、「リムーバブルメディアの挿入」画面が現れるので、「キャンセル」ボタンをクリックします。
フォーマットする前に、USBメモリーのデバイスファイル名”sdb1″を指定してアンマウントしておきます。
umount /dev/sdb1
コマンド”mkfs“で、USBメモリーをフォーマット形式”ext4″にフォーマットします。
sudo mkfs.ext4 /dev/sdb1
途中で「続行しますか?」と聞かれるので、”y”→「Enter」で返します。
y
プロンプトが返ってくれば、フォーマットは完了です。
swap領域の準備
コマンド”mkswap“で、USBメモリー”sdb1″に、ラベル名”usbswap”として、swap領域を準備します。
sudo mkswap -c -v1 -L usbswap /dev/sdb1
パーティションタイプの設定
コマンド”fdisk“で、USBメモリー”sdb”のパーティションタイプを”82 ( Linux Swap )”に設定します。
sudo fdisk /dev/sdb
fdiskのプロンプト「Command(m for help):」が表示されたら、fdiskコマンド”p”でUSBメモリーの現状のパーティション情報を確認しておきます。
p
USBメモリー”sdb1″のパーティションタイプは、”7 ( HPFS/NTFS/exFAT )”として認識されていました。
再び、fdiskのプロンプト「Command(m for help):」が表示されたら、fdiskコマンド”t”でパーティションタイプを変更します。
t
fdiskのプロンプト「Partition type ( type L to list all types ) :」が表示されたら、”82 ( Linux Swap )”を指定します。
82
fdiskのプロンプト「Command(m for help):」が表示されたら、fdiskコマンド”p”で指定した通りに変更されていることを確認します。
p
USBメモリー”sdb”は、パーティションタイプ”82 ( Linux Swap )”として認識されていることが確認できました。
新規swap領域の起動時自動マウント設定
作成したswap領域がRaspbian起動時に自動的に有効化されるように、マウント設定ファイル”/etc/fstab”に書き込みます。
「LXTerminal」を起動し、コマンド”sudo nano“で”/etc/fstab”を開きます。
sudo nano /etc/fstab
「GNU nano」画面が開いたら、「↓」キーでカーソルを行頭に”#”がある最初の行に移動し、「Enter」キーで1行開けて、次の通り入力します。各文字列間は「Tab」キーで送ります。
LABEL=usbswap swap swap default 0 0
入力したら「Ctrl」+「O」キーで上書きし、「Enter」→「Ctrl」+「X」キーで画面を閉じます。
既定swap領域の起動時自動マウント停止
システムディスク ( microSDカード、SSD等 ) 上にマウントされる既定のswap領域は、swap領域管理サービスの”dphys-swapfile”により実行されています。
Raspbian起動時の”dphys-swapfile”の自動実行を止める為、コマンド”insserv“をインストールします。
すると、「認証待ち」画面に続いて「認証」画面が現れるので、パスワード入力欄に【STEP-09】で設定したパスワードを入力し、「OK」ボタンをクリックします。
インストールが終了したら、”insserv“のチェックボックスにチェックが入っていることを確認して、「OK」ボタンをクリックしたます。
インストールした”insserv“で、Raspbian起動時にswap領域管理サービス”dphys-swapfile”が自動実行されるのを止めます。
sudo insserv -r dphys-swapfile
swap領域のマウント状況確認
コマンド”swapon -s“で、swap領域のマウント状況を確認します。
swapon -s
設定ファイルを編集しても、それが反映されるのは再起動後なので、現状のswap領域は既定の約100MBだけでした。
コマンド”swapon -L”で、USBメモリーのswap領域ラベル名”usbswap”をマウントします。
sudo swapon -L usbswap
再び、コマンド”swapon -s“で、swap領域のマウント状況を確認します。
swapon -s
既定の102MBとUSBメモリー”sdb1″の1,955MBが、swap領域としてマウントされていました。
確認したら、再起動します。
reboot
「LXTerminal」を起動し、もう一度、コマンド”swapon -s“で、swap領域のマウント状況を確認します。
swapon -s
USBメモリー”sdb1″の1,955MBだけが、swap領域としてマウントされていました。
swap領域設定後の効果確認
一旦、元の環境に戻す為、既定のswap領域”/var/swap”をマウントして、USBメモリーのswap領域”usbswap”をアンマウントし、コマンド”swapon -s”で確認します。
sudo swapon /var/swap
sudo swapoff -L usbswap
swapon -s
「LXTerminal」をもうひとつ起動し、コマンド”top“で、システム情報を表示します。
表示された画面上にカーソルを移動してクリックし、次のトグルキーを1文字づつ入力して、表示を下の画面のように変更します。
top
m
t
m
z
ブラウザを起動して”You Tube”のノンストップ再生動画を1本づつ再生してみました。同時に3本再生したところで、既定のswap領域100MBを100%使い切りフリーズしそうになりました。1GBの搭載メモリーも95.4%使用して余裕はまったくありません。
全ての画面を閉じて再起動すれば、今回設定した環境に戻るはずですが、念の為、コマンド”swapon -s”で確認します。
swapon -s
「LXTerminal」をもうひとつ起動し、コマンド”top“で、システム情報を表示します。
表示された画面上にカーソルを移動してクリックし、次のトグルキーを1文字づつ入力して、表示を下の画面のように変更します。
top
m
t
m
z
前と同じくブラウザを起動して”You Tube”のノンストップ再生動画を1本づつ再生してみました。同時に5本再生しても、USBメモリーのswap領域1.9GBはまだ90%以上残り、1GBの搭載メモリーの使用率も87,2%で余裕があります。
次回の【STEP-28】では、Cchromiumのキャッシュを高速なRAM内のRAMDISK領域にマウントして、ブラウジングの更なる安定化を図ります。