Linuxのプログラム/ライブラリの一部は、swapの使用を前提に作られているものがあり、swap容量が不足すると、動作が不安定になる場合があるようです。
シングルボードコンピュータの動作が不安定な場合、次の手順でswapを増やしてみることをお勧め致します。
Armbianのswap追加手順
こちらはRaspberry Pi Zeroの場合ですが。コンパイラを動かした場合など、swapの使用量がメインメモリーの容量を上回る場合があります。
ROCK64はメモリー4GB版を使用しましたので、swap領域はメモリー量の2倍、8GBを確保しようと思います。
armbianをeMMCにインストールしたため、/varディレクトリにswapファイルを作成しようと思います。
microSDカードの場合、寿命を考慮すると、microSDカードにswapを作成せずに、USBストレージに新たなswapパーティションを作るか、またはマウントしたパーティションに下記の手順でswapファイルを作るほうが良いかもしれません。
- ddコマンドで空のファイルを作成します。
sudo dd if=/dev/zero of=/var/swapfile bs=1024 count=8M
- パーミッションを0600に変更後、mkswapコマンドでswapファイルシステムを作成します。
sudo chmod 0600 /var/swapfile sudo mkswap /var/swapfile
- swaponコマンドで有効化します。
sudo swapon /var/swapfile
- 再起動後も有効になるように/etc/fstabに設定を追加します。
echo "/var/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab # cat /etc/fstab
こちらの記事では、ROCK64でUrBackupサーバを構築してみました。
swap容量を増やす前は、次のようなカーネルパニックログを出して、数分~数十分おきにROCK64が再起動していました。仮想アドレスへのアクセスに失敗しているようです。Oops!(最終行 和訳:おっとっと)
[ 9595.628035] Unable to handle kernel paging request at virtual address ffffff8007f8ce48
[ 9595.628039] Unable to handle kernel paging request at virtual address ffffff8007f8ce48
[ 9595.628048] pgd = ffffffc0e8a58000
[ 9595.628054] [ffffff8007f8ce48] *pgd=00000000e8a34003, *pud=00000000e8a34003, *pmd=0000000000000000
[ 9595.628060] Internal error: Oops: 86000006 [#1] SMP
swap容量を増やした後は、ROCK64の負荷が上がっても(ロードアベレージ3程度)カーネルパニックは発生しなくなりました。UrBackupサーバ(ROCK64)へのWindows PCのバックアップに16時間程度かかりましたが、一度も再起動することなく、ファイルバックアップ/ボリュームバックアップともに問題なく正常終了しました。
このような感じで、swap容量の増加が、動作の安定化につながるケースもあるようです。
よろしければお試し下さいませ。
(それと熱暴走も要注意でした)