快速业务通道

利用PAPI接口监测Java程序的硬件执行特征 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
需要注意的是,事件组中的原生事件个数不能够超过处理器所能 支持的硬件性能计数器个数。

与高层接口相比,PAPI 底层接口的使用更加灵活,能够对处理器事 件进行更全面的监测。因此,本文的主要内容是探讨如何利用 PAPI 底层接口监测和采集 Java 程序的硬 件执行特征。

利用PAPI接口监测Java程序的硬件执行特征(2)

时间:2011-10-02 ibm 王峰

常用的 PAPI 底层接口

当前的 PAPI 实现有 C 语言和 Fortran 语言两个版 本。本文以 C 语言版本为例,在表 1 中列出了用户在对程序运行时产生的事件进行监测时常用的底层接 口。

表 1. 常用的 PAPI 底层接口

PAPI 底层接口 接口功能简 述
PAPI_library_init 初始化 PAPI 接口库
PAPI_create_eventset 创建事件组
PAPI_add_event / PAPI_add_events 向事件组中添加原生事件或者 PAPI 预制事件
PAPI_remove_event / PAPI_remove_events 从事件组中删除事件
PAPI_start 启动计数器对事件组的计数
PAPI_read 读取计数器数值
PAPI_stop 停止计 数器计数并读取当前的计数器数值
PAPI_cleanup_eventset 清除事件组中的 事件
PAPI_destroy_eventset 销毁事件组
PAPI_shutdown 终止使用 PAPI 并释放所有相关资源

清单 1 给出的代码片段简要地示意了利用 PAPI 接口监测程序的硬件执行特 征的工作流程,该代码片段利用了表 1 中所列的常用的 PAPI 底层接口。

清单 1. 利用 PAPI 接 口监测程序的硬件执行特征

#include <papi.h> #include  <stdio.h> main() {   int EventSet;   long_long  values[1], values1[1], values2[1];   /* Initialize the PAPI library  */   if (PAPI_library_init(PAPI_VER_CURRENT) != PAPI_VER_CURRENT)      handle_error();   /* Create an EventSet */   EventSet =  PAPI_NULL;   if (PAPI_create_eventset(&EventSet) != PAPI_OK)      handle_error();   /* Add an event about Total Instructions Executed  (PAPI_TOT_INS) to EventSet */   if (PAPI_add_event(EventSet, PAPI_TOT_INS) !=  PAPI_OK)     handle_error();   /* Start counting events */    if (PAPI_start(EventSet) != PAPI_OK)     handle_error();   /*  Read counters before workload running*/   if (PAPI_read(EventSet, values1) !=  PAPI_OK)     handle_error();   /* Do some computation here  */   /* Stop counting events */   if (PAPI_stop(EventSet, values2)  != PAPI_OK)     handle_error();   /* Get value */    values[0] = values2[0] – values1[0];   /* Clean up EventSet */   if (PAPI_cleanup_eventset(EventSet) != PAPI_OK)     handle_error();   /* Destroy the EventSet */   if (PAPI_destroy_eventset (&EventSet) != PAPI_OK)     handle_error();   /* Shutdown PAPI  */   PAPI_shutdown(); }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号