gpt4 book ai didi

linux - 性能测量 AMD CPU 上的缓存未命中

转载 作者:行者123 更新时间:2023-12-03 09:59:07 29 4
gpt4 key购买 nike

我正在使用 AMD Ryzen 5 1600 CPU,我想使用 Perf 来测量程序的缓存未命中。当我跑 perf stat -e cache-misses ./program perf 总是报告 0 次缓存未命中。运行 perf list给出以下输出:

  amd_iommu_0/cmd_processed/                         [Kernel PMU event]
amd_iommu_0/cmd_processed_inv/ [Kernel PMU event]
amd_iommu_0/ign_rd_wr_mmio_1ff8h/ [Kernel PMU event]
amd_iommu_0/int_dte_hit/ [Kernel PMU event]
amd_iommu_0/int_dte_mis/ [Kernel PMU event]
amd_iommu_0/mem_dte_hit/ [Kernel PMU event]
amd_iommu_0/mem_dte_mis/ [Kernel PMU event]
amd_iommu_0/mem_iommu_tlb_pde_hit/ [Kernel PMU event]
amd_iommu_0/mem_iommu_tlb_pde_mis/ [Kernel PMU event]
amd_iommu_0/mem_iommu_tlb_pte_hit/ [Kernel PMU event]
amd_iommu_0/mem_iommu_tlb_pte_mis/ [Kernel PMU event]
amd_iommu_0/mem_pass_excl/ [Kernel PMU event]
amd_iommu_0/mem_pass_pretrans/ [Kernel PMU event]
amd_iommu_0/mem_pass_untrans/ [Kernel PMU event]
amd_iommu_0/mem_target_abort/ [Kernel PMU event]
amd_iommu_0/mem_trans_total/ [Kernel PMU event]
amd_iommu_0/page_tbl_read_gst/ [Kernel PMU event]
amd_iommu_0/page_tbl_read_nst/ [Kernel PMU event]
amd_iommu_0/page_tbl_read_tot/ [Kernel PMU event]
amd_iommu_0/smi_blk/ [Kernel PMU event]
amd_iommu_0/smi_recv/ [Kernel PMU event]
amd_iommu_0/tlb_inv/ [Kernel PMU event]
amd_iommu_0/vapic_int_guest/ [Kernel PMU event]
amd_iommu_0/vapic_int_non_guest/ [Kernel PMU event]
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
branch-misses OR cpu/branch-misses/ [Kernel PMU event]
cache-misses OR cpu/cache-misses/ [Kernel PMU event]
cache-references OR cpu/cache-references/ [Kernel PMU event]
cpu-cycles OR cpu/cpu-cycles/ [Kernel PMU event]
instructions OR cpu/instructions/ [Kernel PMU event]
msr/aperf/ [Kernel PMU event]
msr/irperf/ [Kernel PMU event]
msr/mperf/ [Kernel PMU event]
msr/tsc/ [Kernel PMU event]
stalled-cycles-backend OR cpu/stalled-cycles-backend/ [Kernel PMU event]
stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]

rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'man perf-list' on how to encode it)

mem:<addr>[/len][:access] [Hardware breakpoint]

运行 sudo perf list提供了比上面更多的事件。我不知道为什么 cache-misses无法正常工作,因为诸如 branch-misses 之类的事件正在工作。也许我必须使用 amd_iommu_0 之一事件( amd_iommu_0/mem_dte_mis/ 看起来很有希望,但我实际上不确定它衡量的是什么)?是否有任何引用资料可以解释这些事件是什么?

最佳答案

CPU味AMD Ryzen 5 1600基于 AMD Zen微架构家族。快速查找 Zen告诉我 CPUID 与此微架构相关的代码是 17h .

注意,事件cache-misses映射到广义硬件事件, PERF_COUNT_HW_CACHE_MISSES 并非在所有平台上都可用。

根据最新的 linux 内核 source (即 5.3.11)在撰写本文时,可以看到事件 cache-misses CPU 系列不直接支持 17h 以上。

请注意,要了解 AMD 的大部分性能监控计数器 ( PMC ) 事件,您需要引用以下引用资料 -

AMD BIOS 和内核开发人员指南(我找不到适用于 CPU 系列 17h 的内容)

另一个选项不是传递事件的名称,而是传递事件的原始十六进制代码,格式为 -e rXXXX哪里XXXX是代码。另一个答案超过 here描述了如何为 cache-misses 等事件获取此原始十六进制代码。 .

你也可以看看this promise 获取有关如何表示缓存未命中的更多详细信息。

关于linux - 性能测量 AMD CPU 上的缓存未命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58895753/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com