#!/bin/bash # check numactl --hardware output # this checks most of the topology discovery in libnuma testdir=`dirname "$0"` : ${srcdir:=${testdir}/..} : ${builddir:=${srcdir}} export PATH=${builddir}:$PATH numcpus=$(grep -c processor /proc/cpuinfo) numnodes=$(ls -1d /sys/devices/system/node/node[0-9]* | wc -l) nccpus=$(numactl --hardware | grep cpus | sed 's/node.*cpus://' | wc -w ) ncnodes=$(numactl --hardware | grep -c 'node.*size' ) if [ $numnodes != $ncnodes ] ; then echo "numactl --hardware doesnt report all nodes" exit 1 fi if [ $numcpus != $nccpus -a \( $[$nccpus / $numnodes] != $numcpus \) ] ; then echo "numactl --hardware cpus look bogus" exit 1 fi numactl --hardware | grep cpus | while read n ; do node=${n/ cpus*/} node=${node/ /} cpus=${n/*: /} k=0 for i in $cpus ; do if [ ! -h "/sys/devices/system/node/$node/cpu$i" ] ; then echo "$node doesn't have cpu $i" exit 1 fi k=$[$k+1] done if [ $k != $(echo $cpus | wc -w) ] ; then echo "$node missing cpu" exit 1 fi done