last updated on 09 October 2023

システム概要

この章では、OACISの全体像の理解のために、システム構成とデータ構造について説明します


システム構成

OACISは、Ruby on Railsフレームワークを用いて構築されており、ユーザーはウェブブラウザを用いて実行したシミュレーション結果などにアクセスすることができます。 内部のデータベースとしてMongoDBを使用しており、シミュレーション実行時の情報、パラメータについての情報、ホストについての情報などが格納されます。 またシミュレータが出力したファイルやディレクトリについては、ファイルシステム上(publicディレクトリ以下)に保存されます。 システム構成の概要は下図のようになります。

システム構成

ユーザーがシミュレーション実行をリクエストしてから、シミュレーション結果をOACISに保存するまでの処理の流れの概要は以下のとおりです。

  1. まずユーザーがウェブブラウザ(①)上で実行したいシミュレーションを指定する。
    • ブラウザだけでなく、コマンドラインインターフェース(⑥)からもジョブを指定することが可能です。
  2. リクエストはウェブサーバー上(②)で処理され、ジョブの情報がDB(③)に保存される。
  3. Workerと呼ばれるデーモンプロセス(④)がジョブの情報をDBから取得しリモートホスト(⑤)にSSH経由でジョブを投入する。
    • Workerとはバックグラウンドで、リモートホストへのSSH接続やファイル転送などの時間がかかる処理を担当するプロセスである。
    • Torqueなどのジョブスケジューラ経由でジョブが実行されるように各Hostごとに設定することができる。
    • シミュレータは事前にユーザーが各ホスト上でビルドして実行可能な状態にしておく。
    • OAICSにはシミュレータのパスを登録する。Workerがそのコマンドをシェルスクリプトに埋め込みリモートホストで実行する。 * 各ジョブごとにリモートホスト上に一時ディレクトリを作成し、その中でジョブが実行される。
  4. リモートホストでの実行が完了後、Workerが実行結果をOACIS実行サーバーにSFTPでダウンロードする。
    • Workerが定期的にリモートホストをポーリングし、ジョブが完了したかどうか確認する。
    • ジョブの完了後、結果のファイルはファイルストレージおよびDB(③)に格納される。
    • ジョブが実行された一時ディレクトリ以下に作成されたファイルはすべて結果のファイルとみなされ保存される。

格納された結果はブラウザからもファイルシステムからもアクセスすることができます。

データ構造の概略

OACISではシミュレーション結果は図の様なSimulator, ParameterSet, Runの3層構造に分けて保存されます。

データ構造

Simulatorは複数のParameterSetを持ち、ParameterSetは複数のRunを持ちます。 ParameterSetとはあるシミュレータを実行するのに必要なパラメータの値の組をさす概念で、Runとは独立なモンテカルロランの一つをさす概念です。

例として、単純な交通流シミュレータを考えましょう。 この交通流シミュレータは、道路の長さL、信号周期T、車の台数Nを入力パラメータに持つシミュレータだとします。 ParameterSetとは、{L=100, T=10, N=10} などのパラメータの組み合わせのことをさします。 このパラメータセットで乱数の種を変えて5回シミュレーションを行うとすると、5つのRunが作成されることになります。

またそれぞれの結果に対してAnalyzerと呼ばれるポスト処理を定義する事もできます。 各Simulatorに対してAnalyzerを登録することができ、Simulatorと同様にリモートホストで実行されます。 Analyzerの実行結果はAnalysisと呼ばれ、解析対象(ParameterSetまたはRun)の配下に格納されます。

Next »