有没有办法使用unix命令行来获取正在生成或处理工作的核心的名称(或编号)?
目的是检查并行系统实际上是否正在使用所有核心,因此我希望它返回核心名称以及IP地址......
我知道IP地址是
ifconfig
我需要一个核心
这适用于OS X和Linux系统
答案 0 :(得分:1)
对MacOSX使用sysctl
,对Linux使用/proc/cpuinfo
。
在Linux(RHEL / CentOS)上,为了获得逻辑核心的数量,这与启用超线程时的物理核心数量不同,计算每个物理CPU的兄弟姐妹数量。
OSTYPE=`uname`
case $OSTYPE in
Darwin)
NCORES=`sysctl -n hw.physicalcpu`
NLCORES=`sysctl -n hw.logicalcpu`
;;
Linux)
NCORES=`grep processor /proc/cpuinfo | wc -l`
NLCORES=`
grep 'physical id\|siblings' /proc/cpuinfo |
sed 'N;s/\n/ /' |
uniq |
awk -F: '{count += $3} END {print count}'
`
;;
*)
echo "Unsupported OS" >&2
exit 1
;;
esac
echo "Number of cores: $NCORES"
echo "Number of logical cores (HT): $NLCORES"
仅在OS X Mountain Lion和CentOS 5上测试。其他系统可能需要一些修复。请注意,此脚本未经过完全测试。使用时要小心。