gpt4 book ai didi

c++ - 如何在mmap中使用PERF_SAMPLE_READ

转载 作者:行者123 更新时间:2023-12-02 10:05:28 25 4
gpt4 key购买 nike

这个问题与perf_event_open syscall有关,但是没有标签。

我目前正在寻找使用枚举PERF_SAMPLE_READperf_event_sample_format成员从内存映射中检索某些数据的方法,但是由于未知原因,系统调用本身会返回“无效参数”(错误号22)。

我有以下配置:

this->eventConfiguration.sample_freq = 11;
this->eventConfiguration.freq = true;
this->eventConfiguration.inherit = true;
this->eventConfiguration.sample_type = PERF_SAMPLE_CPU | PERF_SAMPLE_TIME | PERF_SAMPLE_PERIOD /*| PERF_SAMPLE_READ*/;

我正在跟踪的事件是 PERF_COUNT_HW_CPU_CYCLES

有我的系统调用。我监视了计算机的每个核心:
int fileDescriptor = syscall(__NR_perf_event_open, this->configuration.getEventConfiguration() , -1, i, -1, 0);

错误的处理如下所示,但我认为它没有用...
if(fileDescriptor < 0) {
switch(errno) {
// here is some cases
};
}

提前致谢 ! :-)

最佳答案

我发现了错误!

问题是设置了inherit结构的perf_event_attr成员时,内核不支持使用PERF_SAMPLE_READ。

以下代码来自内核来源:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/events/core.c#n10788

/*
* We currently do not support PERF_SAMPLE_READ on inherited events.
* See perf_output_read().
*/
if (attr->inherit && (attr->sample_type & PERF_SAMPLE_READ))
goto err_ns;

关于c++ - 如何在mmap中使用PERF_SAMPLE_READ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60397436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com