dotnet/BenchmarkDotNet

Unable to read some hardware counters on ZEN2 CPU

Open

#1,520 建立於 2020年8月21日

在 GitHub 查看
 (18 留言) (3 反應) (0 負責人)C# (11,415 star) (1,054 fork)batch import
Area:Diagnosersgood first issueup-for-grabs

描述

Having trouble reading 'CacheMisses' and 'InstructionsRetired' whenever I run the dotnet/performance benchmark suite. If I run the command from within the src\benchmarks\micro directory:

dotnet run -c Release -f netcoreapp5.0 --filter '*Bilinear*' --counters CacheMisses InstructionsRetired

I get the following error message:

// Validating benchmarks:
The counter CacheMisses is not available. Please make sure you are Windows 8+ without Hyper-V
The counter InstructionRetired is not available. Please make sure you are Windows 8+ without Hyper-V

I am able to get some counters to read by enabling IBS in my BIOS (technically wasn't called IBS, I had to disable SVM to get it to work). So the following command does work for me:

dotnet run -c Release -f netcoreapp5.0 --filter '*Bilinear*' --counters BranchMispredictions

If I profile a C# application outside of BenchmarkDotNet using AMD uProf, I can get cache miss and instructions retired statistics. I am also able to read all of the counters on my Skylake machine using the BenchmarkDotNet CLI without any issues.

Would appreciate any help that can be provided!

貢獻者指南

Unable to read some hardware counters on ZEN2 CPU · dotnet/BenchmarkDotNet#1520 | Good First Issue