2012-12-12 36 views
0

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

目的是检查并行系统实际上是用所有的内核,所以我想它返回的核心名称和IP地址...

我知道IP地址是

ifconfig 

我需要突出部分为一个核心

这是OS X和Linux系统

+0

您可以通过运行'top'来检查是否正在使用所有核心。它将列出每个进程(按CPU降序排序),以及它的使用情况。您应该看到所有进程组都靠近顶端,并且每个进程都接近100%。这当然假定正在执行的处理不是I/O限制的。如果这不止一次,你的时间可能会更好地发现和安装适当的监测工具。祝你好运。 – shellter

回答

1

使用sysctl用于MacOSX的,和适用于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上测试。其他系统可能需要一些修复程序。请注意,此脚本是未完全测试。使用它时要小心。