日本ソフトウェア科学会第 32 回大会 (2015 年度) 講演論文集

X10 を用いた分散エージェントシミュレーション基盤
サービス
村田 浩樹

水田 秀行

鈴村 豊太郎

竹内 幹雄

河内谷 清久仁

我々が分散プログラミング言語 X10 上で開発した分散エージェントシミュレーション基盤（以下 XSIM）は，エージェントの配置，エージェント間のメッセージ交換，ノード内，ノード間のエージェントの移動，ロギングなどの機能を持つ．クラウドの一形態である PaaS(Platform as a Service) は，ソフトウェアをサービスとして開発する環境を提供するが，XSIM をサービスとして提供することでアプリケーション開発者の負担を軽減できる．本稿では
XSIM サービスの設計と，その性能，スケーラビリティについて述べる．

る．IaaS はソフトウェアを配置するための計算資源

1 はじめにを提供するというモデルである．

クラウド・コンピューティングが計算資源を調達す

分散プログラミング言語 X10 [1] は並行処理や分る方法として一般的になっている．サービス・プロ

散処理，局所性を柔軟に扱うために開発されており，バイダと人を介したやり取りをせずに，ネットワー

APGAS と呼ばれるモデルを用いている．このモデ

ク，サーバ，ストレージ，アプリケーション，サービ

ルではグローバル・アドレス空間を複数のプレースとスといった資源を調達でき，利用分の費用しか発生いう領域に分割する．X10 はこのプレースを同期しせず，標準的なネットワーク・プロトコルで PC やモた共有メモリ計算コンテクストとして導入している．

バイルデバイスからアクセスできるといった利点が各プレースはデータを持ち 1 つ以上のタスク（X10ある．クラウド・コンピューティングには 3 つのサー

ではアクティビティと呼ぶ）を実行する．タスクはビスモデルがある．Software as a Service (SaaS)，

async 文を用いてタスクを作り出すことができ，atPlatform as a Service (PaaS)，Infrastructure as a

文を用いて他のプレースに移動し，そこにあるデータService (IaaS) である [4]．SaaS はサービス・プロバをアクセスすることができる．また，X10 プログラム

イダがアプリケーションをサーバ込みでネットワー

は JavaTM または C++ に変換され，コンパイルさク経由でユーザに提供する．PaaS はユーザにアプリれる．Java に変換するものを Managed X10，C++

ケーションを開発するための基盤とサーバを提供すに変換するものを Native X10 と呼ぶ．

XSIM は X10 を用いた社会シミュレーション用の分
X10-Based Distributed Agent Simulation Platform asa Service.
Hiroki Murata, Hideyuki Mizuta,
日本アイ・ビー・エム（株） 東京基礎研究所
国立研究開発法人科学技術振興機構，CREST,IBM Research - Tokyo
CREST, JST.
Toyotaro Suzumura, IBM T.J. ワトソン研究所, IBMT.J. Watson Research Center.
Mikio Takeuchi, Kiyokuni Kawachiya, 日本アイ・ビー・エム（株） 東京基礎研究所, IBM Research - Tokyo.

散エージェント・シミュレーション基盤である [5] [6]．
アプリケーションは Java で書かれるため，Java のAPI を持っている．エージェントの配置，エージェン
ト間のメッセージ交換，ノード内，ノード間のエージェントの移動，ロギングなどの機能を持ち，エー
ジェント・シミュレーションを多数のノード上で分散実行できる．XSIM を PaaS の開発基盤の一部であるサービスとして提供することで，開発環境の構築や環境の拡張，縮小が容易になり，アプリケーション開発者はシミュレーション自体の開発に集中できるようになる．またシミュレーションの開発時や通常時は少ない数のノードで実行しておいて，例えば，災害発生時に避難シミュレーションを速やかに実行するために同じ環境で簡単にノード数を増やして高速なシミュレーションをするといったことができる．本稿は，この「XSIM サービス」の設計とその性能，スケーラビリティについて述べる．

2 XSIM: X10 による分散エージェントシミュレーション基盤
XSIM のエージェントプログラミングモデルは我々が以前開発した Java によるエージェントシミュレーション基盤（以下 JSIM) [10] のものを用いている．

XSIM は Java の API を持ち，エージェントの配置，エージェント間のメッセージ交換，ノード内，ノード

図1

XSIM アーキテクチャ間のエージェントの移動，ロギングなどの機能を持
つ．XSIM は Java と X10 を用いて実装されており，Managed X10 の Java interoperability [7] が使われ3 設計ている．Java で実装されている部分は主に Java のXSIM 環境をクラウドを通じて提供する場合，XSIMAPI であり JSIM の実装を利用している．X10 で実環境のセットアップされたノードを提供して，ユーザ装されている部分はエージェント間のメッセージ交換には “UI” とシミュレーション・プログラム (“simula-とエージェントの移動であり，分散計算機での明示的tion”) を用意，配置してもらうようにすると，PaaSな通信を使わず，X10 の at 文を用いて他の プレー上に図 1 をそのまま再現した形になる．しかし，大スのメソッドを呼ぶ形で実装されている．図 1 に 4規模なシミュレーションを行うためにシミュレーショノードに配置された XSIM のアーキテクチャの例をン用のノードを増やしていくと，シミュレーション・示す．これらのノードには X10 の実行環境が構築さプログラムやシミュレーション用のデータの配置や結れており，各ノードには 1 つのプレースが配置され果の回収が難しくなる．それらを自動化するような他のノードとは証明書を用いたパスワードなしの sshサービスを用意することでユーザのシミュレーションで接続できる．ユーザのシミュレーションは各ノード実行を容易にすることができる．に配置され，XSIM によってロード，実行される．図

図 2 は，そのようなサービスを追加して構築した

1 の中の “UI” はシミュレーションで使用するデータXSIM 環境を示している．図中の “UI” と “VM1–のアップロード，結果のダウンロード，GUI の提供な4” が図 1 の “UI” と “Node1–4” に相当し，“XSIMどを行う．XSIM 環境はエージェントを分散実行できService” が追加したサービスである．“UI” はシミュ高速なシミュレーションを行うことができるが，複数レーション用データのアップロードや結果のダウンの計算機を用意し X10 と XSIM の環境をセットアッロード，GUI の提供を行うので通常ウェブアプリケープすることは単にシミュレーションを行いたいユーザションとして実装される．ウェブアプリケーションはにはしきいが高い場合がある．そこで本稿では XSIMPaaS 上での実装が容易なので PaaS 上に実装する．

環境をクラウドを通じて提供する方法を検討する．

“Node1–4” は ssh アクセスする必要があるが，PaaS図2

XSIM サービスのアーキテクチャ
表1

XSIM Service API

API

Routeprovision

PUT /service instances/:instance idbind

PUT /service instances/:instance id/service bindings/:binding id

unbindDELETE /service instances/:instance id/service bindings/:binding id

deprovision

DELETE /service instances/:instance idupload

POST /instance id2/upload

executePUT /instance id2/execute/:file spec

download

GET /instance id2/download/:file specchange VM number

PUT /instance id2/change vm number/:VM number

では ssh アクセスできない場合が多いため，IaaS 上

配置 (upload)，シミュレーションの実行 (execute)，に配置している．“XSIM Service” は，PaaS のサー結果の回収 (download)，VM 数の増減 (change VM

ビスとして必要な REST API と，XSIM 環境を管理number) といった VM に配置した XSIM 環境を管するための API を兼ね備えた Web サービスである．

理するための API からなる．以下，API の説明のREST API は PaaS のサービスとして登録するためため，PaaS として Cloud Foundry [2] を想定する．に必要な，インスタンスの生成 (provision)，削除 (de-PaaS のサービスはそれぞれ固有の url，user name，provision)，アプリケーションへのバインド (bind)，password で登録されており，url に各 API の引数をアンバインド (unbind) といった API と，ユーザのシ加えてアクセスする．表 1 に API の例を示す．以下，ミュレーション・プログラムとデータの “VM” への各 API について説明していく．

3. 1 provision

3. 5 upload

provision の際には PaaS システムが instance id をユーザのシミュレーション・プログラムとデータ割り当て，それを組み込んだ表 1 の Route を url のの “VM” への配置は，XSIM Service を “UI” にバイ後につなげてアクセスする．XSIM Service は，IaaSンドした後，“UI” から XSIM Service にシミュレー

上に XSIM 環境の VM イメージを用いて VM をション・プログラムとデータを zip して REST API

provision するか，すでに provision されている VMを用いてアップロードすることで行う．必要であればを instance id と関連付けて DB に登録する．

VM の公開鍵で暗号化してアップロードする．XSIM
Service はシミュレーション・プログラムとデータを

3. 2 bind受け取ると，1 つの VM に送り，そこから登録されてバインドの際には PaaS システムが binding id をいる他の VM に配付し，暗号化，zip を解く．

割り当て，instance id と共に表 1 の Route のように組み上げて url の後につなげてアクセスする．XSIM

3. 6 execute

Service は，binding id を instance id と関連付けてシミュレーション・プログラムは，XSIM によって登録する．instance id2，user id2，password2 と証ロード，実行される．実行するプログラムは XSIM明書を生成，登録し，instance id2，user id2，pass-の設定ファイルで指定されるので，ユーザは実行する

word2 と証明書の公開鍵をシステムに返す．システ

プログラム指定した設定ファイルをデータと共にアッムは，ユーザ・アプリケーション (“UI”) の環境変プロードする．シミュレーションの実行だけであれば数に instance id2 を後につなげた url と，user id2，特定のコマンドを実行すればよいが，実行のモニタpassword2，公開鍵を設定し，ユーザ・アプリケーショなどのために指定したコマンドを実行できるようなンから XSIM Service にアクセスできるようにする．

REST API を用意する．

3. 3 unbind

3. 7 download

アプリケーションにバインドした XSIM Service

シミュレーション結果の収集は，指定したファイルが不要になった場合は，アンバインドして削除（de-を収集し 1 つの VM にディレクトリごとに分けて置provision）する．アンバインドの際には PaaS シス

き zip して，XSIM Service を経由して “UI” に戻す．

テムが，instance id と binding id を表 1 の Route

必要であれば各 VM で暗号化した後，収集する．のように組み上げて url の後につなげてアクセスする．XSIM Service は，binding id と，関連付けられ

3. 8 change VM number

た instance id2，user id2，password2，証明書の登VM 数の増減は，“UI” から VM 数を指定して XSIM録と VM 上のデータを抹消する．

Service の REST API を呼び出すことで行う．VM を増やす場合には，XSIM Service は IaaS 上に XSIM

3. 4 deprovisionを利用できる VM イメージを用いて VM を provision

deprovision の際には PaaS システムが，instanceするか，すでに provision されている VM を instanceid を表 1 の Route のように組み上げて url の後につid と関連付けて DB に登録する．証明書を生成し，なげてアクセスする．XSIM Service は，instance id

登録した VM に配布してパスワードなしの ssh で接と関連付けられた VM を deprovision して登録を抹続できるようにする．また，シミュレーション・プロ消するか，証明書を削除した後，空きの VM としてグラムとデータを配付する．VM を減らす場合には，登録し直し，instance id の登録を抹消する．

XSIM Service は VM を deprovision して DB の登録を抹消するか，空きの VM として登録しなおす．

図3

図4

Bluemix カタログの XSIM サービス

Eclipse からプロジェクトをアップロードする

3. 9 ユースケース
図 2 の左側の “User” の列は XSIM サービスの使い方を示している．

する

2. XSIM Service のインスタンスを作成．図 3 はCloud Foundry をベースとした IBM の提供す

1. ユーザはシミュレーション・プログラム (“sim-る PaaS である Bluemix TM [3] 内で，作成するulation”) とそのための UI プログラム (“UI”) をサービスを選択する画面で XSIM Service のア

Dynamic Web Project として Eclipse 上で作成イコンが 1 行目の 2 番目に表示されている．

3. シミュレーション・プログラムとシミュレーション用データ，UI プログラムを PaaS にアップロードする．図 4 は，下のペインに登録されているサーバにアップロードするプロジェクトを選択している画面である．

4. UI プログラムの設定ファイルに XSIM Serviceをバインドすることを記述しておくとアップロード後に自動でバインドされる

5. UI プログラムが XSIM Service を使ってシミュレーション・プログラムとシミュレーション用データを VM インスタンスに配付する

6. UI プログラムが XSIM Service を使ってシミュレーション・プログラムを実行

図5

完全グラフでのメッセージ交換を行うエージェント・アプリケーションの性能

7. UI プログラムが XSIM Service を使ってシミュレーション結果を収集し，統計処理，可視化など

スで 1.6 秒，2 プレースで 1.2 秒かかっている．1 プを行う．

レースは 1 つの VM 上で実行されているため計算にこのような構成にすることでユーザは Eclipse 上ほぼすべての時間がかかっていると考えられる．こので XSIM 上で動作するシミュレーション・プログラ

計算を１つの VM 上の 2 プレースで実行すると半分ムと GUI を用意するだけで，環境などのセットアッの 0.8 秒で済むはずであるが，実験では 2 プレースはプをすることなく容易にシミュレーションを実行する

2 つの VM 上で実行されており通信に 0.4 秒かかってことが可能になる．

いることになる．4 プレースになると通信にかかる時
間は 1 プレースあたりのエージェントが 1/2 になる

4 評価

が別の VM の相手エージェントが 1.5 倍になるため

本節では完全グラフでのメッセージ交換を行う

3/4 になり，計算時間が 1/2 になるため，実行時間はエージェント・アプリケーションを使って XSIM サーおよそ 0.7 秒と計算できる．これ以上プレースを増やビスを評価する．実験環境は Bluemix 上に構成ししても VM が増えないため通信にかかる時間は減らた XSIM Service と IBM の提供する IaaS である

ず，一方プレースが増えると計算時間が 1/2 になってR [3] 上に構成した 1–4 台の VM からなり，
SoftLayer⃝

いき，実行時間は 8 プレースでおよそ 0.5 秒，16 プ

各 VM は x86 2GHz 8 コアと 16GB メモリを持つ．

レースでおよそ 0.4 秒と計算できる．これは実験結果

OS は CentOS 6.x の 64bit 最小インストール．X10とほぼ一致している．このように必要な性能に応じてR2.5.0 (Managed X10）と IBM⃝Java1.7.0 を用意しVM 数を増減し性能をスケールさせることができた．

た．図 5 は総エージェント数を 256 とした場合のア
プリケーションの strong scale の性能を示す．値は 35 関連研究回の実行の平均である．アプリケーションの実行時間

クラウド・コンピューティング・サービス上にエーはプレース数の増加にともない減少するが，線形にはジェント・シミュレーションを用いた社会シミュレー減少していない．1，2，4 プレースは，それぞれ 1，ション・システムを構築したものとしては Wittek ら

2，4 台の VM で実行されているが，8，16 プレースの [9] があげられる．Wittek らは，シミュレーショは 4 台の VM で実行されている．アプリケーション

ン・ソフトウェアをクラウド・コンピューティング・は 2 スレッドで実行されるが計算と通信はシリアルサービス上に移植して実行し，メッセージング性能をに実行される．アプリケーションの実行には 1 プレー評価しているが，サービス化は行っていない．サービ

ス化を行ったものとしては，Taylor らの [8] や Zeheらの [11] などがあげられる．Tylor らはクラウド・コ
ンピューティング・サービスを対象としたシミュレータ向けワークフロー・マネージャを用いてシミュレーション・ソフトウェアをクラウド・コンピューティン
グ・サービス上で動かすケース・スタディを行っている．Zehe らは，シミュレーション・ソフトウェアをIaaS 上に構築し SaaS として提供する際のアーキテ
クチャ，特にデータのセキュリティについて検討し，実装，評価しているが，いずれもシミュレーション・プラットフォームのサービス化は行っていない．

6 まとめ
本稿では X10 上で開発した分散エージェントシミュ
レーション基盤 (XSIM) を PaaS と IaaS を組み合わせた環境にサービスとして設置する際の設計と XSIMのサービスとしての利用方法について述べた．完全グラフでのメッセージ交換を行うエージェント・アプ
リケーションを使って XSIM サービスの性能を測定し，そのスケーラビリティを確認した．今後は XSIMサービスの自動スケーリングへの対応，XSIM 上のエージェント・シミュレーション・アプリケーションの提供を進める予定である．

IBM は International Business Machines Corporationの米国およびその他の国における商標または登録商標です．

Java およびすべての Java 関連の商標およびロゴは，Oracleおよびその子会社，関連会社の登録商標です．SoftLayer はSoftLayer,Inc., IBM Company の登録商標です．

参 考 文 献[ 1 ] Charles, P., Grothoﬀ, C., Saraswat, V., Donawa,C., Kielstra, A., Ebcioglu, K., Praun, C. V., andSarkar, V.: X10: an object-oriented approach to
non-uniform cluster computing, Proceedings of the20th annual ACM SIGPLAN conference on Objectoriented Programming, Systems, Languages, andApplications, 2005, pp. 519–538.
[ 2 ] Cloud Foundry Foundation: Cloud Foundry,
https://www.cloudfoundry.org/.
[ 3 ] International Business Machines Corp.: IBM
Cloud, http://www.ibm.com/cloud-computing/.
[ 4 ] Mell, P. M. and Grance, T.: SP 800-145. The
NIST Definition of Cloud Computing, Technical report, National Institute of Standards and Technology, 2011.
[ 5 ] Suzumura, T. and Kanezashi, H.: Highly Scalable X10-Based Agent Simulation Platform andIts Application to Large-Scale Traﬃc Simulation,
Proceedings of the 2012 IEEE/ACM 16th International Symposium of Distributed Simulation andReal Time Applications, 2012, pp. 243–250.
[ 6 ] Suzumura, T., Kato, S., Imamichi, T., Takeuchi,M., Kanezashi, H., Ide, T., and Onodera, T.: X10based massive parallel large-scale traﬃc flow simulation, Proceedings of the 2012 ACM SIGPLAN
X10 Workshop, 2012.
[ 7 ] Takeuchi, M., Cunningham, D., Grove, D., andSaraswat, V.: Java Interoperability in Managed
X10, Proceedings of the Third ACM SIGPLAN X10
Workshop, X10 ’13, 2013, pp. 39–46.
[ 8 ] Taylor, S. J. E., Anagnostou, A., Kiss, T., Terstyanszky, G., Kacsuk, P., and Fantini, N.: A Tutorial on Cloud Computing for Agent-based Modeling & Simulation with Repast, Proceedings ofthe 2014 Winter Simulation Conference, WSC ’14,2014, pp. 192–206.
[ 9 ] Wittek, P. and Rubio-Campillo, X.: Scalable
agent-based modelling with cloud HPC resourcesfor social simulations, Cloud Computing Technologyand Science (CloudCom), 2012 IEEE 4th International Conference on, 2012, pp. 355–362.
[10] Yamamoto, G., Tai, H., and Mizuta, H.: A
Platform for Massive Agent-based Simulation andits Evaluation, Proceedings of the Sixth Intl. Joint
Conf. on Autonomous Agents and Multiagent Systems, 2007.
[11] Zehe, D., Knoll, A., Cai, W., and Aydt, H.:
SEMSim Cloud Service: Large-scale urban systems
simulation in the cloud, Simulat. Modell. Pract.
Theory, (2015).