5.18. TofuD TNR 統計情報の取得

概要

TofuD TNR (Tofuネットワークルータ) の統計情報を取得することができます。 TNR の各ポート (A,C,B-,B+,X-,X+,Y-,Y+,Z-,Z+) ごとに、次の統計情報を取得できます。

  • ゼロクレジット状態サイクル数

  • 送受信パケット総数

  • 送受信パケット総バイト数(1/16の値)

ゼロクレジット状態サイクル数は、送信先バッファ残量がゼロ状態の合計のサイクル数を表します。動作周波数は425MHzであるため、1サイクルは約2.35ナノ秒に相当します。輻輳によって通信が停止していたサイクル数(時間)を知ることができます。

時間間隔を開けて統計情報を取得し、読み出した値の差分を取ることで通信量などを知ることができます。

送受信パケット総バイト数は、送受信した総バイト数の1/16の値を表します。

参考

富岳ウェブサイトの「Fugaku System Configuration」にTofuDの構成情報があり、参考として参照ください。

統計情報を取得するインターフェース(ioctl)について

TNRの統計情報は、TofuDドライバが提供するioctl(2)のインターフェースにより取得します。 ioctl呼び出し時の引数として次を指定します。

  • ioctl の第1引数: /proc/tofu/dev/info を open した fd番号

  • ioctl の第2引数: _IOWR('d', 9, long)

  • ioctl の第3引数: 次の構造体(tof_get_port_stat)のアドレス

    struct tof_get_port_stat {
          int port_no;
          uint64_t mask;
          uint64_t pa[31];
    };
    

tof_get_port_stat 構造体のport_no 変数と mask 変数は ioctl の入力となるパラメータです。pa 変数には port_no で指定したポートの統計情報の取得結果が格納されます。 pa 変数(配列)のインデックスと、取得可能な統計情報の対応関係は以下の通りです。

pa変数のインデックス

取得結果の説明

0

仮想チャネル0(VC0)におけるゼロクレジット状態サイクル数

1

仮想チャネル1(VC1)におけるゼロクレジット状態サイクル数

2

仮想チャネル2(VC2)におけるゼロクレジット状態サイクル数

3

仮想チャネル3(VC3)におけるゼロクレジット状態サイクル数

6

送信したパケットの総数

7

送信したパケットの総バイト数(1/16の値)

16

受信したパケットの総数

17

受信したパケットの総バイト数(1/16の値)

port_no 変数には下記対応表に基づくポートIDを指定してください。

論理ポート

ポートID

A

1

C

2

B-

3

B+

4

X-

5

X+

6

Y-

7

Y+

8

Z-

9

Z+

10

mask 変数にはビットマスクを設定してください。

  • 0のとき pa[n] を取得する

  • 1のとき pa[n] を取得しない

例えば、pa[0],pa[1],pa[2],pa[3] を取得する場合は、mask に 0xFFFFFFF0 を指定します。 上記の表のすべての統計情報を取得する場合は、mask に 0xFFFCFF30 を指定します。

注意

  • 統計情報の取得時にはハードウェアのレジスタアクセスが発生します。レイテンシが無視できない場合は、mask により取得が必要な情報を明示してください。mask により取得されなかった統計情報としては不定値が返ります。

  • 送受信パケット総バイト数は1/16の値が格納されます。実際の値に変換する場合は16倍してください。

ioctl 呼び出し失敗時には errno に次のエラーが設定されます。

名称

操作

EINVAL

port_no に 1~10以外の値を指定

EFAULT

ユーザ空間とカーネル空間のデータコピーが失敗

サンプルプログラム

ioctl により TofuD の TNR 統計情報を取得するサンプルプログラムを用意しています。

get_port_stat.c のダウンロード

計算ノード上でのコンパイル・実行手順の例を示します。

[_CNlogin]$ fcc get_port_stat.c -o get_port_stat
[_CNlogin]$ ./get_port_stat
port_name,pa[0],pa[1],pa[2],pa[3],pa[6],pa[7],pa[16],pa[17]
A,0,27910272727454,420730647535,0,2464338799405,153641653215667,2934762493226,214395948656466
C,0,18924412834175,489428671284,0,2073545237108,156157972293252,2329968905612,188700401742674
B-,0,3762767544996,390704871815,250024,2243406296215,163990760948475,1978652407038,126890968786478
B+,397823126596,4891130840161,478845006012,44572,2102091704677,162165504844619,1572638411965,101847294931163
X-,131270521308116,18178231547705,1130725761941,24741113620,6310974937394,446507465546870,6129539107432,430123327647998
X+,210371927252085,25664573932559,2226337318599,11202950790,6079358975087,425306776312583,6331250757071,446564108159829
Y-,1239911977558,3394055414680,80637718934,164614927485,366061771695,26837543897751,513661116740,43540705115890
Y+,2619521829150,10313768124615,104613494016,78053815908,738388103253,65146082508265,566950117829,45821629417759
Z-,1989340756317,307229854310,208198959208,198717930578,181498497720,13130612346246,238798680681,19827909732205
Z+,1256929737324,1423913574375,131643193373,170725424408,242929503717,18650318528973,205296746334,14306341870088