SPADI-A Wiki/SPADI-A DAQ マニュアル/イントロダクション/パッケージの各要素/NestDAQ


NestDAQ

(執筆完了時削除 --> 執筆責任者: 洲波泥 太郎, 執筆締め切り: 2024/xx/xx)

ここでは、DAQシステムを動かす上で最低限理解しておきたい NestDAQ の概要を説明する。さらに、NestDAQ関連情報へのリンクを示す。詳しい情報は各リンクを参照のこと。

NestDAQ について

NestDAQ は連続読み出し FEE のために開発された DAQ ソフトウェアフレームワークである。高いスケーラビリティを持つことを目標に設計されており、データ処理のプロセッサーをネットワークに分散させることが可能ないわゆるネットワーク分散型の DAQ ソフトウェアである。小規模実験から中規模実験の加速器物理実験における連続読み出し型 DAQ システムを念頭に設計されているが、汎用のフレームワークであるため、連続読み出しを行いたい計測機器やトリガー型 DAQ にも対応可能であると考えられる。

NestDAQ は GSI FAIR で開発されている DAQ フレームワーク FairMQ をベースにしている。DAQ プロセッサー間の接続トポロジーの管理には、in-memory key-value データベースである Redis を用いる。さらに、NestDAQ では DAQ のスタータス情報、メトリックス情報といった情報を取得するための各種プラグインが用意されている。非常に単純化した場合、"NestDAQ = FairMQ + Redis + 各種プラグイン"ということができる。

デバイスの概念、トポロジー、パラメータの説明

NestDAQ はネットワーク分散型の DAQ であり、1 つまたは複数の計算機において DAQ プログラムのプロセスを走らせ、Redis データベース経由で各プロセスのコントロールを行う。NestDAQ の各プロセスは FairMQ のデバイスクラスを継承して実体化させたものであり、この Linux 上で走る各プロセスのことを FairMQ デバイスと呼ぶ。

各プロセスはデータを前段のプロセス (Sampler プロセスの場合は FEE) からデータを受け取り、なんらかの処理を行なって後段のプロセス (Sink プロセスの場合はストレージ) に送る。データ(一般に、強く結合したシステムは一箇所に不具合が起きただけで全体に影響がおよぶため、堅牢性が低下し、脆弱なシステムとなる。)

一般に、トポロジーとは、要素間の接続様式を表したものであり、

Ethernet のネットワークを

Front End Electronics からのデータを

プロセス間の通信は ZeroMQ と呼ばれるメッセージングライブラリを用いて行われる。

要素: STFB, TB, Filter, EventBuilder, Scaler, Slowdash, uhbook

実行環境

NestDAQ は RedHat 系の Linux 上での運用を想定しており、現在時点 (2024年9月) における推奨実行環境は AlmaLinux 最新版の AlmaLinux 9.4 である。CentOS 7, AlmaLinux 8, AlmaLinux 9 などの RedHat Enterprise Linux (RHEL) のクローンにおいて稼働実績があり、最近の RedHat 系 Linux ではだいたい運用可能であると考えられる。また、Ubuntu 22.04.3 LTS といった Ubuntu/Debian 系の Linux でもコンパイル実績はあるが、本番実験で使用された例はない。また、ソースコードの軽微な修正を行うことで MacOS (Intel CPU) でも clang を用いてコンパイルが通ることがわかっているが、詳しく動作確認された例はない。最近では Windows において Windows Subsystem for Linux (WSL) を用いることで Linux が利用可能になっており、おそらく NestDAQ も動くと考えられるが、検証された例はない。

NestDAQ は ZeroMQ、Boost といったライブラリが必要であり、NestDAQ をインストールする際は事前に各種ライブラリをインストールしておく必要がある。詳細はインストールのインストラクションを参照のこと。C++ のコンパイラとして比較的新しい GCC の g++ が必要である。clang によるコンパイルはあまり実績がないため、g++ によるコンパイルが望ましい。

また、KEK INPS の千代氏が Apptainer 用のコンテナを用意しており、これを用いることでOS非依存にインストールを行わずに NestDAQ を利用可能である。

本稿執筆者

2024/xx/xx 洲波泥 太郎 (SPADI大学), 脱九 花子 (SPADI大学)
2024/xx/xx 脱九 花子 (SPADI大学)