ASM:Topology
From Wiki.cyring.fr
(Difference between revisions)
(→Build the Program) |
(→Additional documentation) |
||
(12 intermediate revisions not shown) | |||
Line 24: | Line 24: | ||
=== Running x2topology === | === Running x2topology === | ||
- | * ''Remark'': You may add your project directory to the executable PATH, or invoke x2topology with a '''./''' prefix (meaning in the current directory) | + | * ''Remark'': You may add your project directory to the executable PATH, or invoke x2topology with a '''./''' prefix (meaning in the current directory)<br /> |
- | + | Launch the x2topology.sh script which iterates through all the '''enabled''' Cores | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
./x2topology.sh | ./x2topology.sh | ||
Line 41: | Line 41: | ||
0x80 7 1 3 | 0x80 7 1 3 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | * Using a Core i7, Nehalem architecture, '''Hyper-threading disabled''' and 4 Cores enabled, it outputs: | + | * Using a Core i7, Nehalem architecture, '''Hyper-threading [[ASM:Topology#Disabling the Hyper-threading|disabled]]''' and 4 Cores enabled, it outputs: |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
OS APIC Thread Core | OS APIC Thread Core | ||
Line 65: | Line 65: | ||
0x80 | 0x80 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | # x2topology, binary | + | where in the header text the following fields mean: |
+ | # OS is the CPU mask as defined by the Linux Kernel, see man taskset | ||
+ | # ACPI is the identifier of the physical or logical Core in a SMT architecture | ||
+ | # Thread is the index number of a Thread inside a Core | ||
+ | # Core is the index number of a Core inside a Processor package | ||
+ | ==== Option ==== | ||
+ | x2topology, binary or shell script can be launched with a verbose option to get details: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
./x2topology -v | ./x2topology -v | ||
./x2topology.sh -v | ./x2topology.sh -v | ||
- | </syntaxhighlight> | + | </syntaxhighlight><br /> |
+ | ===== Disabling the Hyper-threading ===== | ||
+ | Hyper-threading is disabled when starting the Processor.<br /> | ||
+ | Usually this is done through the appropriate option in the BIOS. | ||
+ | |||
+ | == Additional documentation == | ||
+ | # [http://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration Intel® 64 Architecture Processor Topology Enumeration] white paper | ||
+ | # Intel 64 and IA-32 Software Developer Manual | ||
+ | # Intel Processor Identification CPUID Instruction |
Latest revision as of 11:34, 12 March 2014
Contents |
ACPI Extended Topology
Building the Program
Prerequesites
- The Linux Operating System.
- Any Linux package which provides the taskset command that allows the Processor affinity.
- ( util-linux if running ArchLinux. )
- The GNU gcc C compiler.
Getting the Source Files
In the repository, download the following files in a project directory, such as x2topology
- x2topology.c
- x2topology.sh
- Optionally, the binary executable file : x2topology
Compile the Source File
- Compile the C source file
gcc x2topology.c -o x2topology
- Give the executable permission to the downloaded Bash script
chmod +x x2topology.sh
Running x2topology
- Remark: You may add your project directory to the executable PATH, or invoke x2topology with a ./ prefix (meaning in the current directory)
Launch the x2topology.sh script which iterates through all the enabled Cores
./x2topology.sh
- Using a Core i7, Nehalem architecture, Hyper-threading and 4 Cores enabled, it outputs:
OS APIC Thread Core 0x1 0 0 0 0x2 2 0 1 0x4 4 0 2 0x8 6 0 3 0x10 1 1 0 0x20 3 1 1 0x40 5 1 2 0x80 7 1 3
- Using a Core i7, Nehalem architecture, Hyper-threading disabled and 4 Cores enabled, it outputs:
OS APIC Thread Core 0x1 0 0 0 0x2 2 0 1 0x4 4 0 2 0x8 6 0 3 0x10 0x20 0x40 0x80
- Using a Core i7, Nehalem architecture, Hyper-threading disabled and only 1 Core enabled (3 Cores disabled), it outputs:
OS APIC Thread Core 0x1 0 0 0 0x2 0x4 0x8 0x10 0x20 0x40 0x80
where in the header text the following fields mean:
- OS is the CPU mask as defined by the Linux Kernel, see man taskset
- ACPI is the identifier of the physical or logical Core in a SMT architecture
- Thread is the index number of a Thread inside a Core
- Core is the index number of a Core inside a Processor package
Option
x2topology, binary or shell script can be launched with a verbose option to get details:
./x2topology -v ./x2topology.sh -v
Disabling the Hyper-threading
Hyper-threading is disabled when starting the Processor.
Usually this is done through the appropriate option in the BIOS.
Additional documentation
- Intel® 64 Architecture Processor Topology Enumeration white paper
- Intel 64 and IA-32 Software Developer Manual
- Intel Processor Identification CPUID Instruction