获取正在完成工作的核心的名称或编号

时间:2012-12-12 03:10:10

标签: unix parallel-processing

有没有办法使用unix命令行来获取正在生成或处理工作的核心的名称(或编号)?

目的是检查并行系统实际上是否正在使用所有核心,因此我希望它返回核心名称以及IP地址......

我知道IP地址是

ifconfig

我需要一个核心

这适用于OS X和Linux系统

1 个答案:

答案 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上测试。其他系统可能需要一些修复。请注意,此脚本未经过完全测试。使用时要小心。