Skip to content

Create SPEC CPU pinning to NUMA - #815

Open
v-safilho wants to merge 5 commits into
microsoft:mainfrom
v-safilho:users/v-safilho/Create-SPEC-CPU-Pinning-To-NUMA
Open

v-safilho wants to merge 5 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.

Comment thread src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json Outdated
Comment thread src/VirtualClient/VirtualClient.Main/profiles/PERF-SPECCPU-FPRATE.json Outdated
@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"

This branch has not been deployed

No deployments
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.

3 participants