BG Torus 相互接続を使用して BG/Q システムでネットワーク パフォーマンス カウンター データを収集しようとしています。これが最も推奨される方法のように思われるため、私は PAPI を使用しています。他のオプションは bgpm ライブラリであり、このシステムにはインストールされていないと思います。(locate bgpm
私には何もくれませんでした。)
システムで利用可能なすべてのカウンターの名前を取得しようとしています。を実行するpapi_native_avail
と、一連のイベントが返されます。たとえば、ネット カテゴリからの抜粋を次に示します。
...
--------------------------------------------------------------------------------
| net:::ib0:rx:bytes |
| ib0 receive bytes |
--------------------------------------------------------------------------------
| net:::ib0:rx:packets |
| ib0 receive packets |
--------------------------------------------------------------------------------
| net:::ib0:rx:errors |
| ib0 receive errors |
--------------------------------------------------------------------------------
...
papi_native_avail
セグメンテーション違反ですが、それは関係ないと思います。
したがって、この時点での私の理解では、イベント名を使用して を使用してイベント コードを取得できるはずですPAPI_event_name_to_code()
が、これは機能していないようです。これらは、その関数が期待するイベント名ではないと推測しています。だから誰かが説明できます:
BG/Q のすべてのネットワーク イベントはどこにありますか?
これらのイベントのコードを取得するにはどうすればよいですか?
完全を期すために、ここに私のコードと出力があります:
#include <stdio.h>
#include <papi.h>
int main(){
int code = 0;
int ret = 0;
PAPI_library_init(PAPI_VER_CURRENT);
ret = PAPI_event_name_to_code("net:::ib0:tx:fifo", &code);
if(ret != PAPI_OK){
printf("Error in getting code\n");
}
printf("code: %d\n", code);
}
出力:
Error in getting code
code: 0