Hi Tony, On Fri, Mar 10, 2023 at 6:30 PM Tony Luck <tony.luck@xxxxxxxxx> wrote: > Tell me more about your CPU-less nodes. Your fix avoids a bad > pointer reference (because cpumask_first() returns cpu >= nr_cpu_ids > for an empty bitmask). > > But now I'm worried about whether I have the right values in the > formula: > > nr_node_ids / bitmap_weight(node_caches, nr_node_ids); > > This fix avoids counting the L3 from a non-existent CPU, but still > counts the node in the numerator. > > Is your CPU-less node a full (non-SNC) node? Like this: > > Socket 0 Socket 1 > +--------------------+ +--------------------+ > | . | | . | > | SNC 0.0 . SNC 0.1 | | zero . zero | > | . | | CPUs . CPUs | > | . | | . | > | . | | . | > +--------------------+ +--------------------+ > | L3 Cache | | L3 Cache | > +--------------------+ +--------------------+ In the case I saw, the nodes were AEP DIMMs, so all-memory nodes. Browsing sysfs, they are listed in has_memory, but not has_normal_memory or has_cpu. I imagine CXL.mem would have similar issues. -Peter