首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perf_event_open和区间计数

perf_event_open和区间计数
EN

Stack Overflow用户
提问于 2020-11-17 19:00:03
回答 1查看 112关注 0票数 1

如果我有perf_event_open(&attr, tid, -1, -1, 0)

代码语言:javascript
复制
attr.sample_period = _interval; (1ms)
attr.sample_type = PERF_SAMPLE_CALLCHAIN;

这到底是什么意思呢?这是否意味着当线程在任何CPU上花费了恰好1ms时,我注册的处理程序都会收到一个调用链的通知?如果线程在CPU-1上花费500us,现在在CPU-2上达到500us,那么一个信号(SIGPROF)将由运行在CPU上的同一线程传播到进程的处理程序?

EN

回答 1

Stack Overflow用户

发布于 2020-11-17 21:04:33

根据the manual的说法,每次经过事件周期,它都是从当前指令开始的堆栈回溯(因此是函数调用链)。sample_max_stack字段提供要存储的最大帧数,exclude _callchain_ user /内核字段分别排除用户和内核空间帧。

传递给perf_event_open()的第三个参数决定考虑哪个cpu:

代码语言:javascript
复制
int perf_event_open(struct perf_event_attr *attr,
                           pid_t pid, int cpu, int group_fd,
                           unsigned long flags);

当您为此参数传递-1时:

pid >0和CPU == -1它测量任何cpu上的指定进程/线程。

注意事项:在英特尔体系结构上,性能监控单元(PMU)具有一种称为处理器基于事件的采样(PEBS)和性能监控中断的功能,该功能在计数器溢出条件下触发。PEBS使用调试存储机制和PMI来存储处理器的一组体系结构状态信息。

document提供了有关perf如何操作的一些详细信息。采样周期是根据事件的发生次数来表示的,而不是计时器节拍的数量。

document提供了有关在几种硬件架构上实现采样的方式的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64873934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档