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

Reply via email to