夏真っ盛りです。
春はあけぼの、夏は節電。
自宅サーバー管理者にはつらい季節がやって参りました。真夏となると電気代だけでなく停電リスクも高まります。
そこに救世主のごとく現れたのが日本エリートグループ(ECS)から4月に発売された超小型PCキット『LIVA』です。今月にはストレージ容量が2倍になった64GBモデルも新たに発売されています。
『Raspberry Pi』のようなARMベースのSoCではなく、Intel x86系CPUのCeleron N2806を搭載しており、Windows 8.1に対応しているという優れものです。最も特徴的な点は、電源供給にUSBケーブルを使用しており、保証外ながらモバイルバッテリーでも稼働できるという点です。これはNUCにはない利点ではないでしょうか。x86系CPUを搭載するデスクトップPCとしては最強の省電力性能を誇るといっても過言ではないでしょう。
では、最強の省電力PCを、最強のモバイルバッテリーで稼働した場合、何時間稼働することができるのか? 実験してみましょう。
実験概要
使用器機
・日本エリートグループ Mini PC KIT (LIVA -B3-2G-32G) (2014年4月発売モデル。6月購入)
・システムトークス SUGOI BATTERY Ver.2 リチウムタイプ(※)
・センチュリー USB Power Meter USB電圧測定器 Centech CT-USB-PW
※2013年8月旧製品購入。2014年6月アップグレードサービスによりVer.2へアップグレード済。使用頻度は低め。
実験内容
Ubuntu 14.04 LTS をテキストモードで起動し、CPUに100%近い負荷を掛けた状態で何時間稼働を続けられるかを確認する。
(詳細な手順は、後述の参考情報を参照)
実験結果
1日目 スイッチON
使用電力は約5.11V前後で、アイドル時は0.65A前後でした。約3.4Wですからかなりの省電力です。
試しにubuntuのISOイメージをwgetでダウンロードさせたところ、0.67Aまで上昇しました。NICの負荷はそれほど消費電力に影響しないようです。
1日目20時52分45秒 計測開始
CPU使用率は100%。
Linux 3.13.0-32-generic (test) 2014年07月24日 _x86_64_ (2 CPU) 20時42分58秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 20時43分08秒 all 44.32 0.00 55.33 0.00 0.35 0.00 0.00 0.00 0.00 0.00 20時43分18秒 all 47.10 0.00 52.50 0.00 0.40 0.00 0.00 0.00 0.00 0.00 20時43分28秒 all 42.40 0.00 57.15 0.00 0.45 0.00 0.00 0.00 0.00 0.00 20時43分38秒 all 44.87 0.00 54.78 0.00 0.35 0.00 0.00 0.00 0.00 0.00 20時43分48秒 all 42.22 0.00 57.33 0.00 0.45 0.00 0.00 0.00 0.00 0.00 20時43分58秒 all 46.62 0.00 52.93 0.00 0.45 0.00 0.00 0.00 0.00 0.00 20時44分08秒 all 45.30 0.00 54.30 0.00 0.40 0.00 0.00 0.00 0.00 0.00
電流は1.11Aから1.17Aの範囲で変動しているようです。
約6W程度という省電力っぷり。驚きです。
今回の実験では周辺器機やグラフィックを使用していません。
仕様上の要求は3Aですが、サーバーのような用途であれば、2Aで給電できるモバイルバッテリーがあれば問題ないようです。3D関連の処理やハードウェア支援を使用したH.264のデコード処理などを走らせるともう少し電力を消費すると思われます。
最終的に、0.95Aから1.05Aの範囲に落ち着きました。
2日目10時頃 ECS LIVA 64Gモデルの発売情報を知る
32Gモデルを購入したばかりなのに64GBモデルの発売だというのです。
さすがにもう1台買うのは……。ショックのあまり1時間ほどふて寝。
3日目13時20分53秒 電源断
ログに最後に記録されていた時刻。
$ tail ping.log 2014/07/26 13:20:45: 64 bytes from 192.168.1.1: icmp_seq=15189 ttl=64 time=0.151 ms 2014/07/26 13:20:46: 64 bytes from 192.168.1.1: icmp_seq=15190 ttl=64 time=0.226 ms 2014/07/26 13:20:48: 64 bytes from 192.168.1.1: icmp_seq=15191 ttl=64 time=0.160 ms 2014/07/26 13:20:48: 64 bytes from 192.168.1.1: icmp_seq=15192 ttl=64 time=0.149 ms 2014/07/26 13:20:49: 64 bytes from 192.168.1.1: icmp_seq=15193 ttl=64 time=0.159 ms 2014/07/26 13:20:50: 64 bytes from 192.168.1.1: icmp_seq=15194 ttl=64 time=0.157 ms 2014/07/26 13:20:51: 64 bytes from 192.168.1.1: icmp_seq=15195 ttl=64 time=0.218 ms 2014/07/26 13:20:52: 64 bytes from 192.168.1.1: icmp_seq=15196 ttl=64 time=0.161 ms 2014/07/26 13:20:53: 64 bytes from 192.168.1.1: icmp_seq=15197 ttl=64 time=0.149 ms
1日目20:52:45 から3日目13:20:53まで連続稼働できたということになります。およそ40時間半です。
考察
丸2日(48時間)稼働はかないませんでしたが、限定的な条件とはいえ40時間稼働できたというのは素晴らしい成績です。
よく考えると、さすがに丸1日以上停電する事態においては、自宅サーバーどころではないことは確かですが、40時間も問題なく稼働できるというのは心強いものです。もちろんこのCPUの性能ではアクセス数の多いサイトの本格運用は難しく、リバースプロキシ程度しか運用できないかもしれませんが、メンテナンス中のページを表示できるだけでも実用的といえるでしょう。実際にはルーター用の電源確保も必要であり、その他諸々を考えると現実的にはAWSや安価なVPSを借りるほうが良さそうですが……。
もう一つの可能性として、このような製品は災害時の情報集約用のサーバーとして利用できる可能性も秘めています。災害対応用のシステムをインストールしておき、各避難所内のサーバー兼wifiルーターとして運用すれば、限られた電力の中でもスタンドアロンで運用できると考えられます。Windowsをインストールできるという点もアプリケーションの互換性の面で重要なポイントでしょう。
ただ、今回実験する中で気付いた問題点がいくつかあります。まず、画面を接続せずに(いわゆるヘッドレス状態で)Ubuntu 14.04 LTSを起動できないという点(UEFIとgrubの相性と思われる)、次に、正式にサポートされているOSがWindows 8.1 64ビット版だけという点です。恐らく何らかの技術的制約があり、一般的なOSをサポートすることができないのだと思われますが、この点は是非改善を期待したいところです。
参考情報:実験の詳細
実験環境の構築
1. 『LIVA』に、Ubuntu 14.04 LTS amd64(Ubuntu Desktop 日本語 Remix)をインストール後、「sudo apt-get update && sudo apt-get dist-upgrade」コマンドを実行する。
2. テキストログインモードにするため、/etc/default/grub の設定で起動オプションを「GRUB_CMDLINE_LINUX_DEFAULT=”text”」に変更し、「sudo update-grub」を実行する。
3. 「sudo apt get install ssh sysstat stress」を実行する。
4. 今回はwifiとbluetoothのドライバはインストールしない。
5. 負荷を最大にするため、以下のシェルスクリプトbattery-test.shを用意する。
#!/bin/bash
do_ping()
{
echo "=== START ===" > ping.log
ping 192.168.1.1 | while read line; do
echo "$(date '+%Y/%m/%d %H:%M:%S'): $line" >> ping.log
done
}
do_mpstat()
{
mpstat 10 > mpstat.log
}
stress --cpu 2 --io 2 --vm 2 --vm-bytes 128M --hdd 2 &
do_mpstat &
do_ping
このスクリプトは、CPUやIOの負荷を掛けることと、CPUの負荷情報を10秒毎にログに書き出すこと、及び、直近ルーターまでのpingを1秒毎に行い現在日時とともにログに書き出すことを行うもの。
実験手順
1. 『SUGOI BATTERY』のUSB給電ポートに『LIVA』を接続する。(『LIVA』本体には電源ケーブルとLANケーブルのみ接続。キーボード含めUSBポートには何も接続せず)
2. ディスプレイを接続して起動する。(未接続ではUbuntuが正常に起動しないため)
3. ログイン画面が表示されたらディスプレイを切断する。
4. 他のPCからssh経由で『LIVA』に接続し、事前に用意していたbattery-test.shをnohupで実行する。
nohup ./battery-test.sh &
5. sshを接続解除し、ひたすら電池が切れるのを待つ。
6. 通常の電源で『LIVA』を起動し、ping.logの内容を確認。最初の記録と最後の記録の日時を比較し稼働時間を確認する。
実験は長時間を要するため、1回のみ行う。
(本来は複数回実験することが望ましい。)
補足
画像は実験日の後日に撮影したものです。