ASM:Topology
From Wiki.cyring.fr
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
The x2topology, binary or shell script can be lauched with a verbose option to get details:
./x2topology -v ./x2topology.sh -v