Linux Shell脚本查看NUMA信息
Nova在NFV场景下会提供NUMA相关高级特性,这里提供一个脚本查看计算节点的NUMA相关信息。
#!/bin/bash
functionget_nr_processor()
{
grep'^processor'/proc/cpuinfo|wc-l
}
functionget_nr_socket()
{
grep'physicalid'/proc/cpuinfo|awk-F:'{
print$2|"sort-un"}'|wc-l
}
functionget_nr_siblings()
{
grep'siblings'/proc/cpuinfo|awk-F:'{
print$2|"sort-un"}'
}
functionget_nr_cores_of_socket()
{
grep'cpucores'/proc/cpuinfo|awk-F:'{
print$2|"sort-un"}'
}
echo'=====CPUTopologyTable====='
echo
echo'+--------------+---------+-----------+'
echo'|ProcessorID|CoreID|SocketID|'
echo'+--------------+---------+-----------+'
whilereadline;do
if[-z"$line"];then
printf'|%-12s|%-7s|%-9s|\n'$p_id$c_id$s_id
echo'+--------------+---------+-----------+'
continue
fi
ifecho"$line"|grep-q"^processor";then
p_id=`echo"$line"|awk-F:'{print$2}'|tr-d''`
fi
ifecho"$line"|grep-q"^coreid";then
c_id=`echo"$line"|awk-F:'{print$2}'|tr-d''`
fi
ifecho"$line"|grep-q"^physicalid";then
s_id=`echo"$line"|awk-F:'{print$2}'|tr-d''`
fi
done</proc/cpuinfo
echo
awk-F:'{
if($1~/processor/){
gsub(//,"",$2);
p_id=$2;
}elseif($1~/physicalid/){
gsub(//,"",$2);
s_id=$2;
arr[s_id]=arr[s_id]""p_id
}
}
END{
for(iinarr)
printf"Socket%s:%s\n",i,arr[i];
}'/proc/cpuinfo
echo
echo'=====CPUInfoSummary====='
echo
nr_processor=`get_nr_processor`
echo"Logicalprocessors:$nr_processor"
nr_socket=`get_nr_socket`
echo"Physicalsocket:$nr_socket"
nr_siblings=`get_nr_siblings`
echo"Siblingsinonesocket:$nr_siblings"
nr_cores=`get_nr_cores_of_socket`
echo"Coresinonesocket:$nr_cores"
letnr_cores*=nr_socket
echo"Coresintotal:$nr_cores"
if["$nr_cores"="$nr_processor"];then
echo"Hyper-Threading:off"
else
echo"Hyper-Threading:on"
fi
echo
echo'=====END====='
查询结果示例:
=====CPUTopologyTable===== +--------------+---------+-----------+ |ProcessorID|CoreID|SocketID| +--------------+---------+-----------+ |0|0|1| +--------------+---------+-----------+ |1|1|1| +--------------+---------+-----------+ |2|9|1| +--------------+---------+-----------+ |3|10|1| +--------------+---------+-----------+ |4|0|0| +--------------+---------+-----------+ |5|1|0| +--------------+---------+-----------+ |6|9|0| +--------------+---------+-----------+ |7|10|0| +--------------+---------+-----------+ |8|0|1| +--------------+---------+-----------+ |9|1|1| +--------------+---------+-----------+ |10|9|1| +--------------+---------+-----------+ |11|10|1| +--------------+---------+-----------+ |12|0|0| +--------------+---------+-----------+ |13|1|0| +--------------+---------+-----------+ |14|9|0| +--------------+---------+-----------+ |15|10|0| +--------------+---------+-----------+ Socket0:456712131415 Socket1:0123891011 =====CPUInfoSummary===== Logicalprocessors:16 Physicalsocket:2 Siblingsinonesocket:8 Coresinonesocket:4 Coresintotal:8 Hyper-Threading:on =====END=====