linux – 用于部分程序的perf stat
发布时间:2020-05-27 19:30:42 所属栏目:Linux 来源:互联网
导读:是否可以通过perf收集硬件计数器统计信息,仅用于程序执行的一部分?如果是这样,怎么样? likwid提供了能够定义命名区域的功能,但如果在安装了perf的系统上可以实现这一点,那将会很棒. 以前的一些问题已经回复了相关答案,但仍有一些缺点: Using probe我得到了
|
是否可以通过perf收集硬件计数器统计信息,仅用于程序执行的一部分?如果是这样,怎么样? likwid提供了能够定义命名区域的功能,但如果在安装了perf的系统上可以实现这一点,那将会很棒. 以前的一些问题已经回复了相关答案,但仍有一些缺点: > Using probe我得到了同样的错误,我使用的是一个稍新的内核(3.13).这些修补程序是否在较新版本中可用? 解决方法生成子进程以运行perf stat.将perf stat附加到父级. 在需要时从父级杀死子进程. #include <unistd.h>
#include <stdio.h>
#include <signal.h>
int main()
{
int pid= getpid();
int cpid = fork();
if( cpid == 0)
{
// child process . Run your perf stat
char buf[50];
sprintf(buf,"perf stat -p %d > stat.log 2>&1",pid);
execl("/bin/sh","sh","-c",buf,NULL);
}
else
{
// set the child the leader of its process group
setpgid(cpid,0);
//////////////////////////////////////////////
// part of program you wanted to perf stat
sleep(3);
////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// stop perf stat by killing child process and all its descendants(sh,perf stat etc )
kill(-cpid,SIGINT);
////////////////////////////////////////////////////////////////////
// rest of the program
sleep(2);
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
