dotnet / crank

Benchmarking infrastructure for applications
MIT License
991 stars 106 forks source link

Windows cpuSet for load and app jobs is not observed #575

Open RobertHenry6bev opened 1 year ago

RobertHenry6bev commented 1 year ago

I want to run crank teche dotnet PlatformBenchmarks app and the bombardier loadgen on an 80 core ARM64 Windows 11 Enterprise Insider Preview machine,

The configuration yaml file has cpuSet at these places in the spec:

rofiles:
  some-name:
    jobs:
      application:
        cpuSet: 54-63
      load:
        cpuSet: 0-9

Running ProcessExplorer when the workload runs shows that cpus 0-15 have work, and cpus 64-79 have work. That's not what my cpuSet asked for. Further, ProcessE:xplorer says that both the app PlatformBenchmarks and Bombardier regularly run on cpus in both of those sets, eg on cpus 0-15 and also on 64-79.

I do not know if the same behavior is observed on AMD64 hosts.

I hope that ProcessExplorer is doing the right thing.

I wonder if NUMA scheduling is also playing a hand in this? it shouldn't, since on this platform (Ampere Mt. Snow) there's only 1 socket.

ScreenShot-80core-ARM-not-pinned

RobertHenry6bev commented 1 year ago

I'm not sure I believe what ProcessExplorer and "System Information" tell me. I believe TaskManager more, in that it shows cores running with 100% load, and those cores are exactly the ones I'd pinned my app PlatformBenchmarks to

RobertHenry6bev commented 1 year ago

Independent experiments on other Windows machines leads me to believe that ProcessExplorer is broken,, in that data for one CPU is displayed identically in 2 distinct boxes offset in some regular (TBD) way.

RobertHenry6bev commented 1 year ago

perhaps this is relevant: https://learn.microsoft.com/en-us/answers/questions/1039279/400-difference-in-cpu-usage-between-task-manager-a