[英]Counting CPU cycles with `perf_event` in C yields different value than `perf`
[英]How to profile in the Linux kernel or use the perf_event*.[hc] framework?
我注意到在arch / arm / kernel下有一些分析源代碼:
perf_event.c
perf_event_cpu.c
perf_event_v6.c
perf_event_v7.c
perf_event_xscale.c
我不了解這些文件的層次結構,如何使用它們? 我可以假設它們始終存在並在內核模塊中使用它們嗎? 我的內核模塊在Cortex-A7或Cortex-A15內核上運行。
/arch/arm/kernel/
目錄下似乎有很多非常有用的東西,但是沒有有關功能的文檔? 怎么會 ?
Perf_event確實提供了可以以編程方式使用的API,但是文檔充其量是稀疏的。 Vince Weaver在此處提供了使用perf_event API的最佳資源: http ://web.eece.maine.edu/~vweaver/projects/perf_events/
他還提供了一些用於記錄計數器的示例代碼。
但是,最好的選擇是使用包裝perf_event並使其更易於訪問的API,例如PAPI( http://icl.cs.utk.edu/papi/ )
編輯:由於您要從內核模塊執行此操作,因此PAPI將不可用。 但是,perf_event API仍然是。
perf_*
文件中的功能由oprofile
和perf
工具之類的工具使用/提供。
不,它們始終不可用,因為有一個配置選項(CONFIG_PERF_EVENTS)用於啟用/禁用性能測量。
該功能並不是真的要從其他驅動程序中使用。 我很確定,這會“打擾”任何使用oprofile
或perf
用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.