gpt4 book ai didi

linux - 来自 Linux 用户空间的 PEBS 的 x86-64 "linear address"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:00 25 4
gpt4 key购买 nike

是否可以直接从 Linux 用户空间进程而不是使用内核接口(interface)使用 Haswell CPU 功能 PEBS(基于精确事件的采样)?

我已成功使用 RDPMC 指令从用户空间访问性能计数器,并且仅使用 WRMSR 内核。这让我很高兴。

现在我还想访问 PEBS。为此,我需要使用 MSR IA32_DS_AREA 来提供“调试存储”内存区域。但是,我不确定如何分配此内存以及我需要使用什么地址。我可以分配 2MB 的连续物理内存(带 mlock() 的 Linux HugeTLB)。我还可以解析此内存的物理地址(通过 procfs)。但是,我不确定虚拟地址或物理地址是否适合作为为 MSR 提供​​的“线性地址”。 (我担心的是地址可能必须在我无权访问的内核虚拟地址空间中。)

如何在不编写自定义内核模块的情况下为 IA32_DS_AREA 准备合适的内存并记录 PEBS 事件?

最佳答案

是的,可以通过使用 perf 基础设施(避免使用 RDPMC/WRMSR)。您可以在 this Github repo 中找到几个示例更具体地说,tests/record_sample 目录中的测试有多个通过 perf 使用 PEBS 基础结构的示例。

关于linux - 来自 Linux 用户空间的 PEBS 的 x86-64 "linear address"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869524/

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