Linux kernel 性能事件打开:处理上次记录的样本

Linux kernel 性能事件打开:处理上次记录的样本,linux-kernel,perf,Linux Kernel,Perf,基于特定采样周期对事件进行计数时,当前导的最后一个计数器值小于采样周期时,如何处理最后记录的样本 更新: 我已经检查了type的值,它是struct perf\u event\u头的成员。对于上次记录的样本,该值为零,根据perf_event.h头文件,该值似乎没有相应的样本记录类型 换句话说,我的问题是:perf_eventAPI如何处理工作负载完成执行但组长计数器值小于采样周期值的情况?在这种情况下数据是否被丢弃 perf_事件API如何处理工作负载完成执行但组长计数器值小于采样周期值的情况

基于特定采样周期对事件进行计数时,当前导的最后一个计数器值小于采样周期时,如何处理最后记录的样本

更新:

我已经检查了
type
的值,它是
struct perf\u event\u头的成员。对于上次记录的样本,该值为零,根据
perf_event.h
头文件,该值似乎没有相应的样本记录类型

换句话说,我的问题是:
perf_event
API如何处理工作负载完成执行但组长计数器值小于采样周期值的情况?在这种情况下数据是否被丢弃

perf_事件API如何处理工作负载完成执行但组长计数器值小于采样周期值的情况

什么也没发生。如果尚未达到事件计数,则不会写入样本

你应该认为样本通常是统计信息。

如果您确实需要知道,可以使用某种形式的
ptrace
,并在线程终止之前手动读取计数器值

如果您阅读
类型==0的
性能事件标题
,我会很担心。我不认为这会发生

编辑: 根据手册页,我相信您无法读取该特定事件的剩余值,因为采样和计数事件是互斥的

事件有两种类型:计数和采样。计数事件 一种用于计算发生的事件总数的方法。 通常情况下,计数事件结果是通过 读(2)打电话。采样事件定期将测量值写入缓冲区 然后可以通过mmap(2)访问


你有你的密码吗?您试图衡量哪些事件,哪些事件是小组组长?你能告诉我们你得到了什么输出吗?您使用哪种体系结构和Linux内核版本?@ArnabjyotiKalita我的问题是一般性的,不一定与特定的示例相关。我主要想知道计数器在最后一次记录的样本之后收集的数据(小于采样周期值)会发生什么变化。如果你认为这种情况可能与事件有关,你能解释一下为什么你这么认为吗?当然,它不是与事件有关的。我想知道您是否针对特定的用例。既然这是一个更为普遍的情景,那么这个问题现在就有意义了。我不明白第二段问的是什么,但最后一段说得很清楚。但在工作负载终止且组长计数器被禁用后,在这种情况下,计数器是否保留其最后写入的值,或者这取决于体系结构?