有没有办法使用 unix 命令行来获取生成或处理工作的核心的名称(或编号)?
目的是检查并行系统是否实际上正在使用所有核心,所以我希望它返回核心名称以及 IP 地址......
我知道IP地址是
ifconfig
我只需要一个核心
这适用于 OS X 和 Linux 系统
有没有办法使用 unix 命令行来获取生成或处理工作的核心的名称(或编号)?
目的是检查并行系统是否实际上正在使用所有核心,所以我希望它返回核心名称以及 IP 地址......
我知道IP地址是
ifconfig
我只需要一个核心
这适用于 OS X 和 Linux 系统
用于sysctl
MacOSX 和/proc/cpuinfo
Linux。
在 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 上测试。其他系统可能需要一些修复。请注意,此脚本未经过全面测试。使用时要小心。