Add CONFIG_PERMANENT_CPU_TOPOLOGY
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest3 patches 0 repliesNew
- v12 patches 2 repliesSuperseded
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | drivers/base, Combine topology.c and cpu.cdrivers/ drivers/ drivers/ | +128 | 0 replies | |
| 2/3 | cpu hotplug, add CONFIG_PERMANENT_CPU_TOPOLOGYarch/ drivers/ drivers/ | +20 | 0 replies | |
| 3/3 | drivers/base, cpu, remove hotplugable_cpu_attr_groupsdrivers/ | +2 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.
Cover letter [PATCH 0/3 v3] Add CONFIG_PERMANENT_CPU_TOPOLOGY
The information in /sys/devices/system/cpu/cpuX/topology directory is useful for userspace monitoring applications and in-tree utilities like cpupower & turbostat.
When down'ing a CPU the /sys/devices/system/cpu/cpuX/topology directory is removed during the CPU_DEAD hotplug callback in the kernel. The problem with this model is that the CPU has not been physically removed and the data in the topology directory is still valid and the cpu's location is now lost to userspace.
This patchset adds CONFIG_PERMANENT_CPU_TOPOLOGY, and is Y by default for x86, an N for all other arches. When enabled the kernel is modified so that the topology directory is added to the core cpu sysfs files so that the topology directory exists while the CPU is physically present. When disabled, the behavior of the current kernel is maintained (that is, the topology directory is removed on a soft down and added on an soft up). Adding CONFIG_PERMANENT_CPU_TOPOLOGY may require additional architecture so that the cpumask data the CPU's topology is not cleared during a CPU down.
Before patch:
[root@hp-z620-01 ~]# grep ^ /sys/devices/system/cpu/cpu10/topology/* /sys/devices/system/cpu/cpu10/topology/core_id:3 /sys/devices/system/cpu/cpu10/topology/core_siblings:ffff /sys/devices/system/cpu/cpu10/topology/core_siblings_list:0-15 /sys/devices/system/cpu/cpu10/topology/physical_package_id:0 /sys/devices/system/cpu/cpu10/topology/thread_siblings:0404 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list:2,10
Down a cpu
[root@hp-z620-01 ~]# echo 0 > /sys/devices/system/cpu/cpu10/online
[root@hp-z620-01 ~]# ls /sys/devices/system/cpu/cpu10/topology
ls: cannot access topology: No such file or directory
After patch:
[root@hp-z620-01 ~]# grep ^ /sys/devices/system/cpu/cpu10/topology/* /sys/devices/system/cpu/cpu10/topology/core_id:3 /sys/devices/system/cpu/cpu10/topology/core_siblings:ffff /sys/devices/system/cpu/cpu10/topology/core_siblings_list:0-15 /sys/devices/system/cpu/cpu10/topology/physical_package_id:0 /sys/devices/system/cpu/cpu10/topology/thread_siblings:0404 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list:2,10
[root@hp-z620-01 ~]# echo 0 > /sys/devices/system/cpu/cpu10/online
[root@hp-z620-01 ~]# grep ^ /sys/devices/system/cpu/cpu10/topology/* /sys/devices/system/cpu/cpu10/topology/core_id:3 /sys/devices/system/cpu/cpu10/topology/core_siblings:0000 /sys/devices/system/cpu/cpu10/topology/core_siblings_list:/sys/devices/system/cpu/cpu10/topology/physical_package_id:0 /sys/devices/system/cpu/cpu10/topology/thread_siblings:0000 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list:
I did some testing with and without BOOTPARAM_HOTPLUG_CPU0 enabled, and up'd and down'd CPUs in sequence, randomly, by thread group, by socket group and didn't see any issues.
Notes:
core_siblings, and thread_siblings are "numa siblings that are online" and "thread siblings that are online" and are used as such within the kernel They must be zero'd out when the CPU is offline.
Patch 1/3 simply combines topology.c and cpu.c and introduces no new functionality. It is a staging patch for 2/3. Patch 3/3 is a simple cleanup.
Prarit Bhargava (3):
drivers/base, Combine topology.c and cpu.c cpu hotplug, add CONFIG_PERMANENT_CPU_TOPOLOGY drivers/base, cpu, remove hotplugable_cpu_attr_groups
arch/x86/kernel/smpboot.c | 3 - drivers/base/Kconfig | 12 ++++ drivers/base/Makefile | 2 +- drivers/base/cpu.c | 141 ++++++++++++++++++++++++++++++++++++++--- drivers/base/topology.c | 155 --------------------------------------------- 5 files changed, 145 insertions(+), 168 deletions(-) delete mode 100644 drivers/base/topology.c
Signature · 1 line
1.7.9.3