On 6/25/25 14:42, Álvaro Herrera wrote:
> On 2025-Jun-25, Tomas Vondra wrote:
>
>> Not sure. I thought NUMA doesn't matter very much on 32-bit systems too,
>> exactly because those systems tend to use small amounts of memory. But
>> then while investigating this issue I realized even rpi5 has NUMA, in
>> fact it has a whopping 8 nodes:
>>
>> debian@raspberry-32:~ $ numactl --hardware
>> available: 8 nodes (0-7)
>
> Interesting. Mine only shows a single node.
>
> alvherre@amras:~ $ uname -a
> Linux amras 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1
> (2025-04-30) aarch64 GNU/Linux
> alvherre@amras:~ $ sudo numactl --hardware
> available: 1 nodes (0)
> node 0 cpus: 0 1 2 3
> node 0 size: 8051 MB
> node 0 free: 202 MB
> node distances:
> node 0
> 0: 10
> alvherre@amras:~ $ sudo lscpu
> Architecture: aarch64
> CPU op-mode(s): 32-bit, 64-bit
> Byte Order: Little Endian
> CPU(s): 4
> On-line CPU(s) list: 0-3
> Vendor ID: ARM
> Model name: Cortex-A76
> Model: 1
> Thread(s) per core: 1
> Core(s) per cluster: 4
> Socket(s): -
> Cluster(s): 1
> Stepping: r4p1
> CPU(s) scaling MHz: 62%
> CPU max MHz: 2400.0000
> CPU min MHz: 1500.0000
> BogoMIPS: 108.00
> Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics
> fphp
> asimdhp cpuid asimdrdm lrcpc dcpop asimddp
> [...]
> NUMA:
> NUMA node(s): 1
> NUMA node0 CPU(s): 0-3
>
>
> Did you enable something special on it maybe?
>
> ... Oh, I found this:
> https://www.jeffgeerling.com/blog/2024/numa-emulation-speeds-pi-5-and-other-improvements
> Sounds like you have this in your system and I don't in mine.
>
I don't think I had to enable anything special. On the machine running
32-bit RaspberryPi OS I had to install a newer kernel, but I don't
recall doing anything else. I certainly did not apply any kernel patches
or anything like that.
And it seems one of the rpi machines has exactly the same kernel version:
Linux raspberry-64 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian
1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux
So I wonder what's going on, why there's no NUMA on your rpi.
--
Tomas Vondra
debian@raspberry-32:~ $ uname -a
Linux raspberry-32 6.12.34-v8+ #1889 SMP PREEMPT Mon Jun 23 11:11:06 BST 2025 aarch64 GNU/Linux
debian@raspberry-32:~ $ numactl --hardware
available: 8 nodes (0-7)
node 0 cpus: 0 1 2 3
node 0 size: 981 MB
node 0 free: 881 MB
node 1 cpus: 0 1 2 3
node 1 size: 1007 MB
node 1 free: 935 MB
node 2 cpus: 0 1 2 3
node 2 size: 1007 MB
node 2 free: 936 MB
node 3 cpus: 0 1 2 3
node 3 size: 943 MB
node 3 free: 871 MB
node 4 cpus: 0 1 2 3
node 4 size: 1007 MB
node 4 free: 936 MB
node 5 cpus: 0 1 2 3
node 5 size: 1007 MB
node 5 free: 935 MB
node 6 cpus: 0 1 2 3
node 6 size: 1007 MB
node 6 free: 936 MB
node 7 cpus: 0 1 2 3
node 7 size: 990 MB
node 7 free: 918 MB
node distances:
node 0 1 2 3 4 5 6 7
0: 10 10 10 10 10 10 10 10
1: 10 10 10 10 10 10 10 10
2: 10 10 10 10 10 10 10 10
3: 10 10 10 10 10 10 10 10
4: 10 10 10 10 10 10 10 10
5: 10 10 10 10 10 10 10 10
6: 10 10 10 10 10 10 10 10
7: 10 10 10 10 10 10 10 10
debian@raspberry-32:~ $ lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: ARM
Model name: Cortex-A76
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 4
Socket(s): -
Cluster(s): 1
Stepping: r4p1
CPU(s) scaling MHz: 100%
CPU max MHz: 2400.0000
CPU min MHz: 1500.0000
BogoMIPS: 108.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
Caches (sum of all):
L1d: 256 KiB (4 instances)
L1i: 256 KiB (4 instances)
L2: 2 MiB (4 instances)
L3: 2 MiB (1 instance)
NUMA:
NUMA node(s): 8
NUMA node0 CPU(s): 0-3
NUMA node1 CPU(s): 0-3
NUMA node2 CPU(s): 0-3
NUMA node3 CPU(s): 0-3
NUMA node4 CPU(s): 0-3
NUMA node5 CPU(s): 0-3
NUMA node6 CPU(s): 0-3
NUMA node7 CPU(s): 0-3
Vulnerabilities:
Gather data sampling: Not affected
Indirect target selection: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Mitigation; CSV2, BHB
Srbds: Not affected
Tsx async abort: Not affected
debian@raspberry-64:~ $ uname -a
Linux raspberry-64 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux
debian@raspberry-64:~ $ numactl --hardware
available: 8 nodes (0-7)
node 0 cpus: 0 1 2 3
node 0 size: 992 MB
node 0 free: 34 MB
node 1 cpus: 0 1 2 3
node 1 size: 1019 MB
node 1 free: 126 MB
node 2 cpus: 0 1 2 3
node 2 size: 1019 MB
node 2 free: 35 MB
node 3 cpus: 0 1 2 3
node 3 size: 955 MB
node 3 free: 34 MB
node 4 cpus: 0 1 2 3
node 4 size: 1019 MB
node 4 free: 35 MB
node 5 cpus: 0 1 2 3
node 5 size: 1019 MB
node 5 free: 41 MB
node 6 cpus: 0 1 2 3
node 6 size: 1019 MB
node 6 free: 287 MB
node 7 cpus: 0 1 2 3
node 7 size: 1014 MB
node 7 free: 28 MB
node distances:
node 0 1 2 3 4 5 6 7
0: 10 10 10 10 10 10 10 10
1: 10 10 10 10 10 10 10 10
2: 10 10 10 10 10 10 10 10
3: 10 10 10 10 10 10 10 10
4: 10 10 10 10 10 10 10 10
5: 10 10 10 10 10 10 10 10
6: 10 10 10 10 10 10 10 10
7: 10 10 10 10 10 10 10 10
debian@raspberry-64:~ $ lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: ARM
Model name: Cortex-A76
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 4
Socket(s): -
Cluster(s): 1
Stepping: r4p1
CPU(s) scaling MHz: 100%
CPU max MHz: 2400.0000
CPU min MHz: 1500.0000
BogoMIPS: 108.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
Caches (sum of all):
L1d: 256 KiB (4 instances)
L1i: 256 KiB (4 instances)
L2: 2 MiB (4 instances)
L3: 2 MiB (1 instance)
NUMA:
NUMA node(s): 8
NUMA node0 CPU(s): 0-3
NUMA node1 CPU(s): 0-3
NUMA node2 CPU(s): 0-3
NUMA node3 CPU(s): 0-3
NUMA node4 CPU(s): 0-3
NUMA node5 CPU(s): 0-3
NUMA node6 CPU(s): 0-3
NUMA node7 CPU(s): 0-3
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Mitigation; CSV2, BHB
Srbds: Not affected
Tsx async abort: Not affected