The /sys/devices/system/memory and /sys/devices/system/node/nodeX subdirectories contains one or more subdirectories that begin with the word "memory" and end in a 0-based cell/block index for that memory. e.g. /sys/devices/system/node/node0/memory63 is a directory containing information files about the 64th memory block in NUMA node 0.
Previously, code that gathered total physical memory by looking at these subdirectories was using a simple glob on memory* to determine those memory block subdirectories. However, in some recent Linux kernels a /sys/devices/system/memory/memory_failure file causes that simple glob to backfire. This patch replaces the simple glob with a read of the /sys/devices/system/memory or /sys/devices/system/node/nodeX directory and regex matches on memory\d$ to determine if the subdirectory is a memory block one.
The
/sys/devices/system/memory
and/sys/devices/system/node/nodeX
subdirectories contains one or more subdirectories that begin with the word "memory" and end in a 0-based cell/block index for that memory. e.g./sys/devices/system/node/node0/memory63
is a directory containing information files about the 64th memory block in NUMA node 0.Previously, code that gathered total physical memory by looking at these subdirectories was using a simple glob on
memory*
to determine those memory block subdirectories. However, in some recent Linux kernels a/sys/devices/system/memory/memory_failure
file causes that simple glob to backfire. This patch replaces the simple glob with a read of the/sys/devices/system/memory
or/sys/devices/system/node/nodeX
directory and regex matches onmemory\d$
to determine if the subdirectory is a memory block one.Fixes Issue #341