SPEC CPU2006 Platform Settings for Intel-based systems

Firmware / BIOS / Microcode Settings

Patrol Scrub

This BIOS option allows to configure the periodicity of memory scrubbing. Setting this BIOS option to Disable, no systematic periodic scrubbing is done Setting this BIOS option to an integer from 1 to 24 ensures all the memory is scanned in that number of hours

Sub NUMA Clustering (SNC) is a feature for breaking up the LLC into disjoint clusters based on address range, with each cluster bound to a subset of the memory controllers in the system. It improves average latency to the LLC and is an important pre-requisite to enabling KTI prefetch and is a replacement for the Cluster-on-Die feature found in previous processors.
IMC Interleaving
This BIOS option controls the interleaving between the Integrated Memory Controllers (IMCs). If IMC Interleaving is set to two-way, the memory addresses will be interleaved between the two IMCs. If IMC Interleaving is set to one-way, there will be no interleaving. If SNC is enabled, you want one -way interleave. If SNC is disabled, you want two -way interleave. (See also Sub-NUMA Cluster.) Values for this BIOS option can be:
DCU Streamer Prefetcher
DCU (Level 1 Data Cache) streamer prefetcher is an L1 data cache prefetcher. Lightly threaded applications and some benchmarks can benefit from having the DCU streamer prefetcher enabled. Default setting is Enable.
ulimit -s <n>

Sets the stack size to n kbytes, or unlimited to allow the stack size to grow without limit.

numactl --interleave=all "runspec command"

Launching a process with numactl --interleave=all sets the memory interleave policy so that memory will be allocated using round robin on nodes. When memory cannot be allocated on the current interleave target fall back to other nodes.

Mount options to tmpfs interleave mode

mpol=[default|prefer:Node|bind:NodeList|interleave|interleave:NodeList] Set the NUMA memory allocation policy for all files in that instance (if the kernel CONFIG_NUMA is enabled) - which can be adjusted on the fly via 'mount -o remount ...'


prefers to allocate memory from the local node


prefers to allocate memory from the given Node


allocates memory only from nodes in NodeList


prefers to allocate from each node in turn


allocates from each node of NodeList in turn.

The NodeList format is a comma-separated list of decimal numbers and ranges, a range being two hyphen-separated decimal numbers, the smallest and largest node numbers in the range. For example, mpol=bind:0-3,5,7,9-15 Note that trying to mount a tmpfs with an mpol option will fail if the running kernel does not support NUMA; and will fail if its nodelist specifies a node which is not online. If your system relies on that tmpfs being mounted, but from time to time runs a kernel built without NUMA capability (perhaps a safe recovery kernel), or with fewer nodes online, then it is advisable to omit the mpol option from automatic mount options. It can be added later, when the tmpfs is already mounted on MountPoint, by 'mount -o remount,mpol=Policy:NodeList MountPoint'.

The directory containing all spec files, including temporary and binary files, is mapped to memory. This directory is created using linux command mount -t tmpfs -o size=1536g,rw,mpol=interleave none /specRam then all spec files are copied into it before starting the test. One TB is allocated evenly distributed on all the numa nodes.