簡體   English   中英

Linux用戶空間中PEBS的x86-64“線性地址”?

[英]x86-64 “linear address” for PEBS from Linux userspace?

是否可以直接從Linux用戶空間進程使用Haswell CPU功能PEBS(基於精確事件的采樣),而不使用內核接口?

我已經成功使用RDPMC指令從用戶空間訪問性能計數器,並且僅將內核用於WRMSR。 這讓我很高興。

現在我也要訪問PEBS。 為此,我需要使用MSR IA32_DS_AREA提供“調試存儲”存儲區。 但是,我不確定如何分配該內存以及需要使用的地址。 我可以分配2MB的連續物理內存(帶有mlock()的Linux HugeTLB)。 我也可以解析該內存的物理地址(通過procfs)。 但是,我不確定虛擬地址還是物理地址是否適合作為MSR的“線性地址”。 (我擔心的是,該地址可能必須位於我無法訪問的內核的虛擬地址空間中。)

如何在不編寫自定義內核模塊的情況下為IA32_DS_AREA准備合適的內存並記錄PEBS事件?

是的,可以通過使用性能基礎結構來實現(避免使用RDPMC / WRMSR)。 您可以在此Github存儲庫中找到幾個示例,更具體地說, tests/record_sample目錄中的tests/record_sample通過perf使用PEBS基礎結構提供了多個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM