【发布时间】:2010-12-15 11:51:06
【问题描述】:
当您运行 Mac OS X 时,如何从命令行得知计算机上有多少个内核?在 Linux 上,我使用:
x=$(awk '/^processor/ {++n} END {print n+1}' /proc/cpuinfo)
它并不完美,但很接近。这是为了喂给make,这就是为什么它给出的结果比实际数字高1。而且我知道上面的代码可以用 Perl 写得更密集,也可以用 grep、wc 和 cut 来写,但我认为上面的代码是简洁性和可读性之间的一个很好的折衷。
非常晚的编辑: 澄清一下:我问的是有多少 逻辑 核心可用,因为这与我希望 make 的同时作业数量相对应产卵。 jkp 的答案,由 Chris Lloyd 进一步完善,正是我所需要的。 YMMV。
【问题讨论】:
-
对于 linux,我避免通过使用添加一个:
grep ^processor /proc/cpuinfo | wc -l -
参见stackoverflow.com/questions/6481005/… 注意
nproc命令。 -
很抱歉,如果这是一个菜鸟问题,但是当您指的是逻辑核心时,您是指物理核心吗?这些术语有何不同(或不同)?只是为了更好地了解您的要求。
-
不,我指的不是物理内核。物理内核是芯片上实现内核的一组晶体管。逻辑核心似乎是操作系统和用户程序的核心。在绝大多数情况下,这些都是相同的。但是,英特尔的超线程技术(可能还有其他技术)使每个物理内核都显示为两个逻辑内核。
-
作为一个仅供参考,现在在 Linux 上,nproc 实用程序是查找此信息的首选方法,而不是尝试计算处理器信息。 nproc 可让您找出总内核数和进程允许生成的最大值。有时这是一个重要的区别。