Linux 基于性能计数器将程序分类为计算密集型

Linux 基于性能计数器将程序分类为计算密集型,linux,performance,parallel-processing,profiling,perf,Linux,Performance,Parallel Processing,Profiling,Perf,我试图将少数并行程序归类为计算/内存/数据密集型。我可以根据从性能计数器(如perf获得的值对它们进行分类吗。这个命令给出了两个值,比如页面错误数,我认为这些值可以用来判断程序是否需要频繁访问内存,否则就不需要了 这种方法是否正确和可行。如果没有,请有人指导我将节目分为不同的类别 干杯, 克里斯是的,从理论上讲,你应该能够用性能做到这一点。如果你想分析记忆活动,我不认为页面错误事件是应该观察的。为此,在英特尔处理器上,您应该使用uncore事件来计算内存流量(单独读/写)。在我的Westmile

我试图将少数并行程序归类为计算/内存/数据密集型。我可以根据从性能计数器(如perf获得的值对它们进行分类吗。这个命令给出了两个值,比如页面错误数,我认为这些值可以用来判断程序是否需要频繁访问内存,否则就不需要了

这种方法是否正确和可行。如果没有,请有人指导我将节目分为不同的类别

干杯,
克里斯

是的,从理论上讲,你应该能够用性能做到这一点。如果你想分析记忆活动,我不认为页面错误事件是应该观察的。为此,在英特尔处理器上,您应该使用uncore事件来计算内存流量(单独读/写)。在我的Westmile EP上,这些计数器是
UNC\u QMC\u正常\u读取。任何
UNC\u QMC\u写入\u已满。任何

以下文章将详细介绍您的问题(在英特尔处理器上):


根据您要查找的详细信息的深度,您可能会找到可以满足您需要的软件包。我的公司开发的Allinea Performance Reports()提供了这种分类和分析——它不关注页面错误之类的事情,而是分析指令——比如向量操作、内存读取——它还测量并行(MPI)通信。