【问题标题】:How to get number of physical CPU:s in Linux using C?如何使用 C 在 Linux 中获取物理 CPU:s 的数量?
【发布时间】:2011-02-25 14:02:18
【问题描述】:

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

【问题讨论】:

    标签: c linux


    【解决方案1】:

    @Havoc P: /proc/cpuinfo 中不显示离线 CPU。

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

    【讨论】:

      【解决方案2】:

      您可以解析 /proc/cpuinfo 并计算不同的“物理 id:”行数。有点烦人,但我不知道是否有更好的选择。如果您使用 GLib 或其他支持正则表达式的库,那就更容易了。或者,如果您感觉很hacky,您可以popen() 一个命令行来执行此操作。命令行示例:http://www.brandonhutchinson.com/Understanding_proc_cpuinfo.html

      【讨论】:

      • POSIX 正则表达式支持(BRE 和 ERE)是任何 POSIX 系统(包括 Linux)上标准库的一部分。不需要花言巧语。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-06-02
          • 2016-03-10
          • 2012-07-13
          • 1970-01-01
          • 2010-12-05
          • 2014-05-06
          • 2020-01-15
          • 2017-04-26
          • 1970-01-01
          相关资源
          最近更新 更多