Howto

必要最低限のシステムを稼働させる縮退運転について

このHowtoでは、Armadillo-IoT G3/G3L,Armadillo-X1(以下Armadilloと記載)使用中に障害が発生した場合、システム停止を防ぎつつ最低限のシステムを稼働させる縮退運転についてご紹介します。

長期稼働を想定したシステム運用中、以下のような障害の発生が予想されます。

  • 高負荷処理による機体の高温化
  • 停電による電源断
  • バッテリーで動作するシステムのバッテリー残量低下
  • ネットワーク障害によるデータ通信不可

このような障害が発生した場合、対策なしではシステムが動作し続けられないという状態に陥る可能性があります。
それを防ぐため、障害発生時の縮退運転が実装されていると良いです。

本Howtoでは、上記で紹介した障害の発生を例に対策例をご紹介します。

高温化

大容量のデータを送受信し続けるなど、高負荷の処理を実装しているシステムである場合、使用し続けるとArmadilloの温度が上昇し高温になります。
Armadilloは測定温度が105℃以上まで上昇するとシステムを停止するサーマルシャットダウン機能が実装されています。
サーマルシャットダウンによるシステム停止を行いたくない場合は縮退運転を実装し、測定温度105℃となる前に負荷軽減を行って温度を下げる必要があります。

測定方法

Armadilloの温度は、i.MX 7Dualの温度センサから温度を取得することができます。
温度の取得は、/sys/class/thermal/thermal_zone1/temp をcatすることで取得可能です。

[armadillo ~]# cat /sys/class/thermal/thermal_zone1/temp
34570

表示された数値はミリ℃であるため、上記数値は34.57℃となります。

発熱軽減方法

実装したアプリケーション内の高負荷処理停止やEthernet,3G/LTEのコネクション一時停止を行うことで軽減は可能です。
停止を行いたくない場合は、ethtoolを用いて通信速度を抑えることで軽減することができます。

[armadillo ~]# apt-get install ethtool

以下例では、有線LANの通信速度を100Mbpsに設定しています。

[armadillo ~]# ethtool -s eth0 autoneg off duplex full speed 100

thermal-monitor

Armadilloの温度監視方法として、thermal-monitorというアプリケーションが存在します。
apt-getから取得可能で、i.MX 7Dualの温度を監視してアプリケーション制御により発熱を抑えることができます。
詳細は製品マニュアル「6.7.2. 温度を監視する」をご確認ください。

停電による電源断

Armadilloを長期運用する中で、急な停電による電源断の可能性は0にできません。
停電が発生した場合、取得しているデータの欠落やシステム停止といった被害の恐れがあるため、対策する必要があります。

瞬断,停電に対する対策例は別Howto「瞬断、停電に対して備えておきたいこと」にてご紹介しているため、そちらを参考にしてください。

バッテリー残量低下

Armadilloを設置する環境によっては、バッテリーを接続して動作させることもあると思われます。 バッテリー残量が少なくなると、Armadilloに供給されている電圧が低下します。
この際通常の処理を実施し続けていると、Armadilloを動作させる電圧が足りなくなり、強制シャットダウンしてしまう可能性があります。
強制シャットダウンによるボード情報破損や取得データ消失を防ぐため、縮退運転によって消費電力量を抑えておくと良いです。

電圧測定方法

電力供給量は電源電圧を取得することで監視が可能です。
電源電圧はADコンバーターへの入力電圧を取得し、計算することで取得可能です。

また、電源電圧の監視はvintriggerコマンドを利用することで実現できます。

電源電圧の取得,監視は製品マニュアル「6.8.ADコンバーター」を参照してください。

消費電力量軽減方法

消費電力量の増加は、システムの高負荷処理の実行時に発生します。
そのため、高温化の発熱軽減方法と同様に実装したアプリケーション内の高負荷処理停止やEthernet,3G/LTEのコネクション一時停止を行うことが効果的です。

データ通信不可

データ通信を行う場合、Ethernet,3G/LTE,wwanを用いてネットワークに接続して行うと思われます。
何らかの原因によってシステム稼働中にネットワークが切断されると、データが送信できず消失する問題が発生する可能性があります。
これを防ぐため、ネットワークの状態を監視し、通信不可となった場合にデータを一時保存するような実装があると良いです。

上記内容については、別Howto「ネットワークの切断,瞬断に対して備えておきたいこと」でご紹介しています。