快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

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

时间:2011-10-02 ibm 王峰

如表 3 所示,创建 、绑定事件集和向其中添加事件都在每个线程启动事件的回调函数中进行,这样每个线程就可以拥有自己 独立的事件集资源。同时,代理程序需要借助一个全局变量,记录下各个线程对应的事件集,以备在不同 的虚拟机事件回调函数(主要是应用线程启动和应用线程结束)中被相关的 PAPI 接口函数调用。

在本文附带的样例代码中,实现了一个在处理器为 IBM POWER5+、操作系统为 Linux 的系统中, 使用基于 JVMTI 的方法调用 PAPI 接口并对 Java 程序的硬件执行特征进行监测的例子。其中,被监测 的 Java 程序创建了一个子线程计算 Fibonacci 数列,而用 C 语言编写的代理程序则负责 JVMTI 所需 的代理初始化以及实现表 3 中所列的各个虚拟机事件对应的回调函数。

为了方便用户区分那些被 监测到的从属于不同 Java 线程的硬件计数器数值,本文附带的样例代码利用 JVMTI 接口提供的 GetThreadInfo 方法获得线程名称,如清单 2 所示。

清单 2. 利用 JVMTI 接口获得线程名称

void  printThreadName(jvmtiEnv *jvmti_env, JNIEnv* jni_env, jthread  thread) {   jvmtiThreadInfo info;   jvmtiError err;   if  (thread == NULL) {     printf("Warning: NULL thread\n");      return;   }   err = (*jvmti_env)->GetThreadInfo(jvmti_env, thread,  &info);   if (err != JVMTI_ERROR_NONE) {     printf("Error:  GetThreadInfo, Error code = %d\n", err);     return;   }    printf("Thread name: %s\n", (char *)info.name);   return; }

在设置被监测的处理器事件时,用户需要查阅相关处理器的手册以获得更详尽的信息。以 IBM POWER 处理器为例,其生产厂商提供了多个事件簇(Event Group)给用户使用,其中每一个事件簇 都是若干处理器原生事件的集合。一个事件簇中包含的事件个数与处理器拥有的硬件性能计数器个数相同 ,这些事件在计数器的使用上不存在冲突,它们将在程序运行时同时被各自对应的计数器监测。这些事件 的产生往往存在着功能或者逻辑上的关联,以事件簇的方式对它们同时进行监测有助于用户对程序运行过 程中的硬件行为获得更全面的认识。在本文附带的样例代码中,被添加到事件组中的被监测事件就同属于 IBM POWER5+ 的一个事件簇,其具体描述如表 4 所示。

表 4. 样例代码所用 IBM POWER5+ 处理 器事件的描述

计数器 事件名称 事件编码 事件简述
0 PM_1PLUS_PPC_CMPL 0x40000002 有至少一条 PPC 指令 被执行完成的周期
1 PM_GCT_EMPTY_CYC 0x4000017A 处理 器流水线为空的周期
2 PM_GRP_CMPL 0x400001AB 有指令 组被执行完成的周期
3 PM_CYC 0x40000011 处理器周期
4 PM_RUN_INST_CMPL 0x400001E2 有指令被处理器执行完 成
5 PM_RUN_CYC 0x40000138 处理器处于 RUN 状态的周 期

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

时间:2011-10-02 ibm 王峰

如表 4 所示,在

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号