パフォーマンス向上でナニに使える? OpenBlocks Aファミリによるサーバ実力診断

第2回 マイクロサーバの新モデル「OpenBlocks A6」と「OpenBlocks AX3」の性能を徹底チェック!

この記事を読むのに必要な時間:およそ 5 分

はじめに

OpenBlocksシリーズは,小型,堅牢,低消費電力のLinuxサーバとして,さまざまな用途に活用いただいてきました。しかし,性能面に関しては,ネットワークのインフラや監視用途としては必要十分なものの,LAMPなどのリッチなアプリケーションを搭載しようとすると不満が出ることもありました。そのため,いつかこの点は改善したいと思い続けてきました。

本連載で前回ご紹介したとおり,2012年6月7日に2つの新モデルを発表しました。1つは従来の用途を見据えつつストレージ性能の向上や導入コストの低減を図った「OpenBlocks A6」⁠以降,A6)⁠もう1つはCPUが1.33GHzのデュアルコアとなり最大4ポートのギガビットイーサなどの豊富なI/Oを備えた「OpenBlocks AX3」⁠以降,AX3)です。いずれも従来のPowerPCからARMアーキテクチャに変更となり,性能・仕様の向上を図りつつも,低消費電力は維持しています。

今回は,OpenBlocksの基本仕様や使い方の解説を交えながら,実際のところどの程度性能が向上したのか,実機検証をもとに紹介していきたいと思います。

OpenBlocksのOS

OpenBlocksでは,x86サーバとは異なり,出荷時点で必ずOSがインストールされています。ARMアーキテクチャでは,x86のように共通のカーネルバイナリでさまざまなハードウェアを動かすことはできず,ハードウェア専用のカーネルバイナリが必要となります。OpenBlocks Aファミリでは,この専用カーネルとDebian GNU/Linux 6.0のユーザランドを結合したファームウェアをあらかじめ本体基板上のフラッシュROMに書き込んであります。

そのため,サーバでありながら,製品購入後にOSをインストールする手間がなく利用でき,設定を初期化したいというときもコマンド1つで設定情報を消去したり,ボタン1つで初期設定状態で起動させることもできます。一見地味ですが,使ってみるとさまざまな面でとても便利なしくみを実現しています。もちろんカーネルなどの更新の際には,フラッシュROM内に格納したファームウェアも更新可能です(deb形式のパッケージで当社リポジトリから配布します)⁠

ストレージなしでも稼働可能

SSDを搭載しない場合,ファームウェアに含まれるDebianのユーザランドは本体メモリの一部を使って作成するRAMディスク領域に展開して/(ルート)パーティションとします。RAMディスク状態でも,apt-get/aptitudeによるソフトウェアの追加・更新が可能です。ただし,このままでは再起動でリセットされてしまいますので,変更内容の保存が必要となります。

フラッシュROMには,ファームウェア用の領域以外にユーザが自由に書き換え可能なユーザエリアを用意しています(AX3は50MB程度,A6は30MB程度)⁠変更内容は専用のコマンドでユーザエリアに保存することで,起動のつどフラッシュROMからRAMディスクに展開し,環境を復元できます。データの蓄積が不要な用途であれば,SSDの書き換え寿命や突然の電源断によるファイルシステムの破損の可能性を考える必要がなくなり,より堅牢なシステムを構築できるようになります。

初期セットアップ

OpenBlocksには,x86サーバのようなキーボード,ビデオ,マウスを接続するポートがありません。設定はルータやネットワークスイッチのように,シリアルコンソールやSSHを用いて行います。シリアルコンソールやSSHの接続は,WindowsであればTera Termやputty,UNIX/Linuxであればcuやscreen,sshなどが利用しやすいでしょう。

接続が済んでしまえば,あとはDebianの操作そのものです。性能向上も相まって,アーキテクチャの違いをほとんど意識することなく利用できるものと思います。Debianに不慣れな方のために,最初に行うべき設定内容や目的別の設定方法をCookbookと称して公開していますので,ぜひご覧ください。

パフォーマンスの比較検証

さっそく,比較検証を実施していきます。表1の機器で同一の試験を実施し,そのパフォーマンスを比較します。機器は新モデルのAX3とA6,一世代前のOpenBlocks 600D(以降,600D)⁠AX3の導入において比較されることを想定したAtomベースのx86サーバを用意しました。

性能測定は,おもにAX3の用途として想定しているWebサーバとして利用した場合のほか,ストレージとCPU性能のベンチマークを測定しています。CPU性能については,A/B/Cの各OpenBlocksの性能差の参考情報として用意しました。

表1 性能比較に使用した機器のおもな仕様

モデルOpenBlocks AX3OpenBlocks A6OpenBlocks 600DAtomサーバ
OSDebian 6.0Debian 6.0Debian 6.0Debian 6.0
アーキテクチャarmelarmelpowerpcamd64
CPUARMADA XPARMADA 310PPC405EXAtom D510
CPUクロック1.33GHz600MHz600MHz1.66GHz
メモリ1GB DDR3512MB DDR21GB DDR22GB DDR2
ストレージADATA S396 30GB SSDADATA S396 30GB SSD専用CF 8GBADATA S396 30GB SSD

Webサーバとしての性能比較

静的HTMLファイルを配信するWeb(Apache)サーバ環境を構築し,毎秒のアクセス性能を測定しています。測定にはApache Bench(abコマンド)を使用し,並列100リクエストを計10,000リクエストのHTTP接続で測定しています。結果は表2にまとめています。

ab -c 100 -n 10000 http://IPアドレス/

AX3と600Dの比較では,クロック数の差以上の結果となっており,性能向上がよくわかるかと思います。A6と600Dとの比較も,クロックは同じですが倍近い結果となっています。Atomサーバとの比較は,AX3でもさすがに力及ばずですが,違いはクロック差どおりとなっており,同クロックのAtomサーバであれば拮抗した結果になったかと思います。

表2 Webサーバとしての性能測定結果

 OpenBlocks AX3OpenBlocks A6OpenBlocks 600DAtomサーバ
HTTP request/sec2,9005302703,800

ストレージの性能比較

今回は,Debianパッケージとして用意されているfioパッケージを利用してストレージの性能を測定しています。表1の構成にあるストレージを/mntにマウントしたあとに,図1に記載した方法で測定しています。結果は表3にまとめています。

600Dの遅さが目立ちますが,ほかは項目によって得手不得手はあるものの,リード(READ)性能はシーケンシャル・ランダムともにOpenBlocksがAtomサーバよりも良い結果となりました。

図1 fioによる測定

# cp /usr/share/doc/fio/examples/ssd-test .
# vi ssd-test
directory=/mount-point-of-ssd

 ↓ 書き換え 

directory=/mnt
# fio ssd-test

表3 ストレージのベンチマーク結果

 OpenBlocks AX3OpenBlocks A6OpenBlocks 600DAtomサーバ
シーケンシャルREAD40713KB/s
10178IO/s
35112KB/s
6136IO/s
4043KB/s
1010IO/s
25752KB/s
6438IO/s
ランダムREAD23591KB/s
5897IO/s
20612KB/s
5153IO/s
3590KB/s
897IO/s
16174KB/s
4043IO/s
シーケンシャルWRITE21409KB/s
5352IO/s
17094KB/s
4273IO/s
2482KB/s
620IO/s
45305KB/s
11326IO/s
ランダムWRITE10695KB/s
2673IO/s
10400KB/s
2600IO/s
58KB/s
14IO/s
41751KB/s
10437IO/s

CPUの性能比較

CPUの性能比較には,CPU演算性能を測定するUnixBenchを利用しました。これはパッケージが用意されていないため,それぞれの環境でコンパイルする必要があります図2)⁠CPU性能については,各OpenBlocksの性能差の参考情報として用意しました。結果は表4にまとめています。

図2 UnixBenchの導入

# aptitude install make gcc perl
# wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
# tar xvzf UnixBench5.1.3.tgz
# cd UnixBench
# make

表4 CPUのベンチマーク結果

 OpenBlocks AX3OpenBlocks A6OpenBlocks 600D
hrystone 2 using register variables279.0084.1083.70
Double-Precision Whetstone11.704.002.60
Execl Throughput160.3073.5047.90
File Copy 1024 bufsize 2000 maxblocks154.5099.0025.10
File Copy 256 bufsize 500 maxblocks100.2067.0017.70
File Copy 4096 bufsize 8000 maxblocks322.60174.8040.50
Pipe Throughpu133.0098.6059.90
Pipe-based Context Switching102.5031.1034.20
Process Creation191.4091.3070.30
Shell Scripts(1concurrent)431.40148.6096.80
Shell Scripts(8concurrent)543.10136.2086.50
System Call Overhead316.60268.10275.70

コメント

コメントの記入