簡體   English   中英

在Linux中實際檢測緩存未命中和命中

[英]Detecting Cache Misses and Hits Pragmatically in Linux

我知道這是特定於平台的問題,但是,我想對應用程序進行一些運行時分析,以檢測緩存未命中和命中。 我知道cachegrind,valgrind和vtune的工具,還有一大堆其他的分析工具。 但是,我感興趣的是,在實現我自己的緩存未命中檢測版本時。 我知道cachegrind充當緩存模擬器。 在不破壞內核的情況下,如何實用地檢測緩存缺失? 我覺得這對於用戶土地應用來說幾乎是不可能的,但我不得不問。

有辦法做到這一點! 在Linux上,您可以為此目的利用Linux性能計數器子系統。 例如,看看這里: http//lxr.linux.no/#linux+v2.6.37.3/tools/perf/

如何在沒有緩存模擬的情況下務實地檢測到緩存缺失?

緩存由硬件管理 - 而不是內核。 它們的參數(高速緩存,大小,踢出策略,回寫/直寫等級)都是特定於處理器實現的。 作為程序員,你“不應該知道它們存在”。 因此,無需緩存模擬就可以測量緩存未命中性能。

另一方面,操作系統管理VM頁面(一個粗糙的“緩存” - 在緩存保存內存塊的意義上)。 我想有辦法通過黑客入侵內核甚至創建一個漂亮的用戶應用程序來收集有關頁面錯誤的統計信息。 頁故障統計可能不是多大用處,你(特別是因為他們受到其他正在運行的進程),而是使用大量的RAM的應用程序可能 (蠅頭,點點)有頁面出錯或頁面訪問模式類似於CPU緩存訪問模式。 但是,我對細節不太確定。

暫無
暫無

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

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