There is an example on one of the hosts, where jcstress detects the topology as:
Detecting CPU topology and computing scheduling classes:
Linux, using /sys/devices/system/cpu
2 packages, 1 core per package, 2 threads per core
CPU lists:
Package #0, Core #0, Threads: 0, 1
Package #1, Core #0, Threads: 0, 1
...whereas the real topology is:
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
This is because core #0 is recorded for both packages #0 and #1.
This deadlocks the scheduler.
Detecting CPU topology and computing scheduling classes:
Linux, using /sys/devices/system/cpu
2 packages, 1 core per package, 2 threads per core
CPU lists:
Package #0, Core #0, Threads: 0, 1
Package #1, Core #0, Threads: 0, 1
...whereas the real topology is:
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
This is because core #0 is recorded for both packages #0 and #1.
This deadlocks the scheduler.
- links to
-
Review openjdk/jcstress/40