如何使用C获取Linux中的物理CPU数量?

时间:2011-02-25 14:02:19

标签: c linux

我知道sysconf(_SC_NPROCESSORS_ONLN)会给我逻辑处理器的数量。但是如何获得物理处理器的数量呢?

4 个答案:

答案 0 :(得分:3)

@Havoc P: 离线cpus未显示在/ proc / cpuinfo。

CPU拓扑由/ sys / devices / system / cpu / cpu * / topology / *

描述

答案 1 :(得分:1)

你可以解析/ proc / cpuinfo并计算不同“物理id:”行的数量。有点讨厌,但我不知道是否有更好的选择。如果您正在使用GLib或其他具有正则表达式支持的库,那么它会更容易。或者你可以popen()一个命令行,如果你感觉真的很hacky。示例命令行位于:http://www.brandonhutchinson.com/Understanding_proc_cpuinfo.html

答案 2 :(得分:1)

我认为获取此信息的最佳方法是使用hwloc:http://www.open-mpi.org/projects/hwloc/

它们提供了大量用户工具,可以让您了解系统的cpu拓扑,但它们还提供了一个可以在C中使用的库:http://www.open-mpi.org/projects/hwloc/doc/v1.1.1/#interface

答案 3 :(得分:0)

或许this answer类似的问题确实有帮助。关于代码不正确的评论,但它可能是一个很好的起点。