如何正确使用papi_native_avail在BG / Q系统上获取网络性能监控事件?

时间:2016-02-18 03:46:54

标签: c performance papi

我正在尝试使用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()从中获取事件代码,但这似乎不起作用。我猜这些不是该函数所期望的事件名称。所以有人可以解释一下:

  1. 在哪里可以找到BG / Q的所有网络事件?

  2. 如何获取这些活动的代码?

  3. 为了完整性,这是我的代码和输出:

    #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
    

0 个答案:

没有答案