簡體   English   中英

perf中的硬件事件和硬件緩存事件有什么區別?

[英]What's the difference between hardware Event and hardware cache Event in perf?

當我輸入perf list命令時,我發現有兩種事件: Hardware eventHardware cache Event 兩者有什么區別 ?

cache-missesLLC-misses什么區別? 緩存未命中是否包括LLC未命中?

在測試程序時, perf工具是否會降低總體性能?

根據perf_event_open系統調用的手冊頁 (由perf用戶級實用程序在內部使用):

  • 硬件事件:這表示內核提供的“通用”硬件事件之一
  • 硬件緩存事件:這表示硬件緩存事件。

更多我想知道這是否與[英特爾®64和IA-32架構軟件開發人員手冊3B]中的非架構和架構事件有一些聯系。英特爾®64和IA-32架構軟件開發人員手冊3B 2

無論此分類的確切含義如何, 在上一個問題和上面提到的手冊頁中所述的cache-misses表示任何緩存無法提供的內存訪問次數。 換句話說,它表示最后一級高速緩存中的高速緩存未命中數。 因此,我認為這與LLC-misses相同,遺憾的是我無法在我的筆記本電腦上確認,因為不支持LLC-misses

關於您的上一個問題,性能監視所產生的開銷應該非常低。 實際上,開銷主要是由於讀取計數器值,並且使用perf stat我猜這個讀數應該在執行結束時只執行一次(考慮到計數器不會溢出)

問題2:如果我查看ARM內核代碼(“arch / arm / kernel / perf_event_v7.c”)的性能

緩存未命中意味着ARMV7_PERFCTR_L1_DCACHE_REFILL,這意味着第一級數據緩存未命中So LLC可能意味着低級緩存未命中(可能是L3)

您可以查看體系結構特定的內核代碼ARMV7_PERFCTR_L1_DCACHE_REFILL具有哪些值以及技術參考手冊以了解該值的確切含義。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html

問題3:我認為perf從硬件寄存器讀取計數器(至少用於硬件性能計數器),因此不會真正影響代碼的性能。 因為它不會真正將代碼掛鈎放在代碼中。 但有些論文表示,如果在代碼中使用perf,則會有5%的性能損失。

暫無
暫無

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

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