MPIログ収集モジュール

  • BlueField-2 DPU上で実行することを想定
  • MPICHの通信チャネルの設定は,./configure --with-device=ch3:sock ...対応
  • MPICH(mpirun)実行時に、環境変数MPICH_PORT_RANGEの設定が必要
  • TCP port番号の範囲はこちら (unisonflow-mpichを参考にした)
unsigned short mpich_port_start = 50000;
unsigned short mpich_port_end = 50100;

実行方法

# Build DPU application without containers
DPU$ ./src/build_app.sh
# Run the application
DPU$ sudo ./bin/run_mpiid.sh

評価計測用のサンプルMPIプログラムの実行

  • mpichのインストールが必要, mpicc, mpirunが利用できることが必要

取得するデータ

  • ログ記録時刻(UTC)
  • 送信元ノードIP
  • 宛先ノードIP
  • 送信データサイズ
  • MPI関数

ログファイル出力のバッファリング

  • putLogのフロー
    1. バッファされている文字列長buf_lenを取得
    2. if buf_len > LOG_BUF_SIZE
      1. mutex lock
      2. ファイルオープン
      3. ファイルに文字列を出力
      4. ファイルクローズ
      5. mutex free
    3. else
    • bufferに最新のログを追加

パケット受信,解析処理,送信の実行順序

パケット受信→解析処理→送信の順番で実行すると,解析処理の時間がかかってしまうため,通信遅延時間が大きくなる.

通信遅延時間短縮を目的の一つとしているため,パケット受信→送信までの時間をできるだけ短くする必要がある.