2

我想在運行某些工作負載時收集性能計數器數。 這可以使用現有的LAPI性能計數器基礎結構輕鬆完成。 但是,我希望有更多類似的統計硬件性能計數器來計算操作系統的訪問數

  1. 中環的級別數指令0,1,2,3
  2. 由不同的環級別L1緩存負載的請求數一環 - 的
  3. 長度高級開關

因此,有效地我想區分操作系統和應用程序的內存訪問。

有人可以請指導我如何做到這一點? PS:我之前沒有使用過性能計數器。所以,對你來說看起來有些微不足道的東西實際上可以幫助我。謝謝

PS:有什麼辦法可以在不改變應用程序行爲的情況下獲得系統的執行跟蹤和內存訪問跟蹤。

+0

這個實驗中使用的CPU是什麼?什麼是操作系統(是現代Linux)? – osgx

+0

此處使用的CPU是Pentium i5處理器,操作系統是現代Linux(Ubuntu最新發行版) –

回答

3

您可以使用硬件性能計數器,如perf

現代硬件提供了硬件性能計數器,所以您的機器具有此功能的可能性很大。你也可能需要爲它安裝內核驅動程序。 (在Ubuntu上,sudo apt-get對此很神奇)。

PERF的小描述

逆足是Linux 2.6+基礎的系統分析器工具抽象 遠離CPU硬件差異在Linux中性能測量結果和 提供了一個簡單的命令行接口(從上面鏈路導入) 。 Perf基於最近版本的Linux內核導出的 perf_events接口。

的PERF的工具支持,其中這些事件在上面的鏈接中列出可測量事件

的列表。

說了許多事件,你想獲得cycles事件的統計信息如下

perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000 其中uk分別代表用戶和內核。您還可以使用逗號分隔所有事件。