Skip to content

Create SPEC CPU pinning to NUMA - #815

Merged
Erica Vellanoweth (ericavella) merged 13 commits into
microsoft:mainfrom
v-safilho:users/v-safilho/Create-SPEC-CPU-Pinning-To-NUMA
Oct 26, 2026
Merged

Erica Vellanoweth (ericavella) merged 13 commits into
microsoft:mainfrom
v-safilho:users/v-safilho/Create-SPEC-CPU-Pinning-To-NUMA

Conversation

@v-safilho

Copy link
Copy Markdown
Contributor

SPEC CPU pinning binds benchmark processes to specific CPU cores/NUMA nodes, reducing scheduling and memory-placement variability. This enables more consistent performance results and controlled comparisons across CPU/NUMA topology

#pbi 39982524

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@alexffrank

alexffrank commented Oct 10, 2026 •

Copy link
Copy Markdown

Samuel, please add a property into Metricds.CustomDimensions.metadata_scenario reflecting the status of NUMA/Core pinning. No info is ok (and backwards compatible) to imply there is no affinity/pinning.

@alexffrank

alexffrank commented Oct 10, 2026 •

Copy link
Copy Markdown

Samuel, per SPEC CPU documentation NUMA/Core affinity is controlled via a configuration file of the workload.
https://open.spec.org/cpu2017/Docs/config.html

I'm yet to find whether this change follows the SPEC CPU spec. Does it?
(if yes, could you please point to the relevant source code?)

IDK whether SPEC CPU 2026 is backwards compatible to 2017's configuration. If not, I would submit two distinct PRs.

…or Linux SPEC CPU 2017 rate profiles. Validate CPU selection, capture NUMA diagnostics, add tests, and document default, single-node, and cross-node usage.
@v-safilho

Copy link
Copy Markdown
Contributor Author

Samuel, please add a property into Metricds.CustomDimensions.metadata_scenario reflecting the status of NUMA/Core pinning. No info is ok (and backwards compatible) to imply there is no affinity/pinning.

implemented here

@v-safilho

Copy link
Copy Markdown
Contributor Author

Samuel, per SPEC CPU documentation NUMA/Core affinity is controlled via a configuration file of the workload. https://open.spec.org/cpu2017/Docs/config.html

I'm yet to find whether this change follows the SPEC CPU spec. Does it? (if yes, could you please point to the relevant source code?)

solution implemented here, follows the SPEC CPU spec configuration. I am injecting numactl into the generated SPEC .cfg, so SPEC invokes numactl separately.

SPEC CPU allows a submit command to bind benchmark processes:
numactl --physcpubind for CPU/core affinity plus -l or -m for NUMA-aware memory placement on multi-socket/NUMA systems.

image
SPEC CPU2017 Platform Settings for HPE ProLiant Intel-based systems

@v-safilho

Copy link
Copy Markdown
Contributor Author

Ubuntu 26.04.1 LTS Evidences collected from Juno Orchestrator
image

@v-safilho

Copy link
Copy Markdown
Contributor Author

Ubuntu 24.04.4 LTS Evidences collected from Juno Orchestrator
image

…o users/v-safilho/Create-SPEC-CPU-Pinning-To-NUMA

# Conflicts:
#	src/VirtualClient/VirtualClient.Actions/SPECcpu/SpecCpuExecutor.cs
#	src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json
#	src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-INTRATE.json
#	website/docs/workloads/speccpu/speccpu-profiles.md
@v-safilho

Copy link
Copy Markdown
Contributor Author

updated to accomplish the new VirtualClient naming convention CopyCount and ThreadCount.
ex.: --parameters="CopyCount=4,,,ProcessorAffinity=0,1,48,49"

…umaProcessorAffinity in the executor, INTRATE/FPRATE profiles, tests, and documentation.
…it-test assertions for NUMA-diagnostic metrics. SPEC CPU will no longer emit node-cpus-*, node-size-*, or node-free-* metric rows
…opies across NUMA nodes as capacity allows. Expose NumaProcessorAffinitySymmetric in the INTRATE and FPRATE profiles with an unpinned default, and add validation, tests, and usage examples.
…alance copies across NUMA nodes, one CPU each; explicit CPU IDs pin copies them manually.
…iewer request, I added the 6, 8, 12, 13, and 14-copy cases.
@ericavella
Erica Vellanoweth (ericavella) merged commit fef70c3 into microsoft:main Oct 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants