Lines Matching +full:single +full:- +full:core
1 .. SPDX-License-Identifier: GPL-2.0
11 The architecture-agnostic topology definitions are in
12 Documentation/admin-guide/cputopology.rst. This file holds x86-specific
17 Needless to say, code should use the generic functions - this file is *only*
28 the past a socket always contained a single package (see below), but with the
35 - packages
36 - cores
37 - threads
48 Package-related topology information in the kernel:
50 - topology_num_threads_per_package()
54 - topology_num_cores_per_package()
58 - topology_max_dies_per_package()
62 - cpuinfo_x86.topo.die_id:
66 - cpuinfo_x86.topo.pkg_id:
74 - cpuinfo_x86.topo.logical_pkg_id:
81 - topology_max_packages():
86 - cpuinfo_x86.topo.llc_id:
88 - On Intel, the first APIC ID of the list of CPUs sharing the Last Level
91 - On AMD, the Node ID or Core Complex ID containing the Last Level
97 A core consists of 1 or more threads. It does not matter whether the threads
98 are SMT- or CMT-type threads.
100 AMDs nomenclature for a CMT core is "Compute Unit". The kernel always uses
101 "core".
105 A thread is a single scheduling unit. It's the equivalent to a logical Linux
108 AMDs nomenclature for CMT threads is "Compute Unit Core". The kernel always
111 Thread-related topology information in the kernel:
113 - topology_core_cpumask():
120 - topology_sibling_cpumask():
122 The cpumask contains all online threads in the core to which a thread
125 - topology_logical_package_id():
129 - topology_physical_package_id():
133 - topology_core_id();
135 The ID of the core to which a thread belongs. It is also printed in /proc/cpuinfo
150 1) Single Package, Single Core::
152 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
154 2) Single Package, Dual Core
156 a) One thread per core::
158 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
159 -> [core 1] -> [thread 0] -> Linux CPU 1
161 b) Two threads per core::
163 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
164 -> [thread 1] -> Linux CPU 1
165 -> [core 1] -> [thread 0] -> Linux CPU 2
166 -> [thread 1] -> Linux CPU 3
170 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
171 -> [thread 1] -> Linux CPU 2
172 -> [core 1] -> [thread 0] -> Linux CPU 1
173 -> [thread 1] -> Linux CPU 3
177 [node 0] -> [Compute Unit 0] -> [Compute Unit Core 0] -> Linux CPU 0
178 -> [Compute Unit Core 1] -> Linux CPU 1
179 -> [Compute Unit 1] -> [Compute Unit Core 0] -> Linux CPU 2
180 -> [Compute Unit Core 1] -> Linux CPU 3
182 4) Dual Package, Dual Core
184 a) One thread per core::
186 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
187 -> [core 1] -> [thread 0] -> Linux CPU 1
189 [package 1] -> [core 0] -> [thread 0] -> Linux CPU 2
190 -> [core 1] -> [thread 0] -> Linux CPU 3
192 b) Two threads per core::
194 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
195 -> [thread 1] -> Linux CPU 1
196 -> [core 1] -> [thread 0] -> Linux CPU 2
197 -> [thread 1] -> Linux CPU 3
199 [package 1] -> [core 0] -> [thread 0] -> Linux CPU 4
200 -> [thread 1] -> Linux CPU 5
201 -> [core 1] -> [thread 0] -> Linux CPU 6
202 -> [thread 1] -> Linux CPU 7
206 [package 0] -> [core 0] -> [thread 0] -> Linux CPU 0
207 -> [thread 1] -> Linux CPU 4
208 -> [core 1] -> [thread 0] -> Linux CPU 1
209 -> [thread 1] -> Linux CPU 5
211 [package 1] -> [core 0] -> [thread 0] -> Linux CPU 2
212 -> [thread 1] -> Linux CPU 6
213 -> [core 1] -> [thread 0] -> Linux CPU 3
214 -> [thread 1] -> Linux CPU 7
218 [node 0] -> [Compute Unit 0] -> [Compute Unit Core 0] -> Linux CPU 0
219 -> [Compute Unit Core 1] -> Linux CPU 1
220 -> [Compute Unit 1] -> [Compute Unit Core 0] -> Linux CPU 2
221 -> [Compute Unit Core 1] -> Linux CPU 3
223 [node 1] -> [Compute Unit 0] -> [Compute Unit Core 0] -> Linux CPU 4
224 -> [Compute Unit Core 1] -> Linux CPU 5
225 -> [Compute Unit 1] -> [Compute Unit Core 0] -> Linux CPU 6
226 -> [Compute Unit Core 1] -> Linux CPU 7