0

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

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

我知道IP地址是

ifconfig

我只需要一个核心

这适用于 OS X 和 Linux 系统

4

1 回答 1

1

用于sysctlMacOSX 和/proc/cpuinfoLinux。

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

于 2012-12-12T17:24:23.077 回答