我想在运行一些工作负载时收集性能计数器号。使用现有的LAPI性能计数器基础结构可以轻松地完成这一任务。但是,我想要更多的统计数据,比如
因此,实际上,我想要区分操作系统和应用程序的内存访问。
有人能指点我怎么做吗?PS :我以前没有使用过性能计数器。所以,对你来说有些琐碎的事情可能真的对我有帮助。谢谢
PS :有没有任何方法可以在不改变应用程序行为的情况下获得系统的执行跟踪和内存访问跟踪。
发布于 2012-05-20 11:09:37
您可以使用硬件性能计数器(如perf )。
现代硬件提供硬件性能计数器,因此您的机器具有此功能的可能性很大。此外,您可能需要为它添加内核驱动程序。(对ubuntu来说,sudo apt是神奇的)。
对perf的一点描述(从上面的链接中导入)
Perf是一个用于基于Linux的系统的分析器工具,它抽象出2.6+性能度量中的CPU硬件差异,并提供了一个简单的命令行接口。Perf基于最近版本的Linux内核导出的perf_events接口。 perf工具支持可测量事件的列表。
在上面的链接中列出了这些事件。
假设在许多事件中,您希望获得下面的cycles事件的状态
perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000,其中u和k分别是用户和内核。还可以使用逗号分隔所有事件。
https://stackoverflow.com/questions/10563848
复制相似问题