利用PAPI接口监测Java程序的硬件执行特征 - 编程入门网
利用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 接口获得线程名称
在设置被监测的处理器事件时,用户需要查阅相关处理器的手册以获得更详尽的信息。以 IBM POWER 处理器为例,其生产厂商提供了多个事件簇(Event Group)给用户使用,其中每一个事件簇 都是若干处理器原生事件的集合。一个事件簇中包含的事件个数与处理器拥有的硬件性能计数器个数相同 ,这些事件在计数器的使用上不存在冲突,它们将在程序运行时同时被各自对应的计数器监测。这些事件 的产生往往存在着功能或者逻辑上的关联,以事件簇的方式对它们同时进行监测有助于用户对程序运行过 程中的硬件行为获得更全面的认识。在本文附带的样例代码中,被添加到事件组中的被监测事件就同属于 IBM POWER5+ 的一个事件簇,其具体描述如表 4 所示。 表 4. 样例代码所用 IBM POWER5+ 处理 器事件的描述
利用PAPI接口监测Java程序的硬件执行特征(6)时间:2011-10-02 ibm 王峰如表 4 所示,在 |
||||||||||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |