dotnet / dotnet/crank

Windows cpuSet for application has different performance for different textual representations of the same cpuSet

Open
#576 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
1.1k
Forks
111
Avg merge
2d 21h
Merged PRs (30d)
3

Description

I run the dotnet/aspnet/teche/plaintext benchmark so the PlatformBenchmarks application is on a modern Intel server machine, running modern Windows 11 2022. The load generator is on an adjacent server in the same rack; the network link is not a bottleneck. The server has 2 sockets per board, 64 cores per socket, with 2 way SMT enabled, for a total of 128 "logical processors". There are 2 NUMA domains.

The local apparent maximum rps is to set the cpuSet of the application PlatformBenchmarks to 26 cores in the same NUMA domain.

The cpuSet specification of "0-25" runs 483krps.
The cpuSet specification of "0-0,1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9,10-10,11-11,12-12,13-13,14-14,15-15,16-16,17-17,18-18,19-19,20-20,21-21,22-22,23-23,24-24,25-25" runs slower by 10%, eg at 447krps.

This is repeatable.

I would expect semantically identical specifications of the cpuSet to have equivalent behavior at runtime.

Speculation: the long form "0-0,1-1, ..." incrementally tells the kernel what the cpuset is. perhaps incremental change runs afoul of the NUMA domain?

I need cpuSet to "do the right thing" so I can experiment with NUMA splits, uncore routing, and more.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.