【问题标题】:Find number of CPUs in linux kernel查找linux内核中的CPU数量
【发布时间】:2017-04-03 22:21:15
【问题描述】:

我想检测 linux 内核中的 CPU 数量并编写一个 sys_call 来找到它。

cpuinfo_x86 给出了一个 CPU 的特征,cpu_detect 填充了它,但是如何找到要检测的 CPU 数量?

【问题讨论】:

标签: linux linux-kernel


【解决方案1】:

使用 MACRO NR_CPUS 我们可以找到 CPU 的数量。 此宏不应在 early_init 序列中使用,因为大多数 NR_CPUS 不会被初始化,因为它是运行时宏。

或者你可以使用num_online_cpus()函数来获取在线cpu数量。

您可以在include/linux/cpumask.h 标头中找到更多选项,以查找各种 CPUS 的可用性。

【讨论】:

    【解决方案2】:

    您可以使用所有架构在内核启动和初始化期间设置的nr_cpu_ids 变量。

    【讨论】:

      【解决方案3】:

      试试:

      $lscpu
      

      这为我提供了有关 CPU 以及架构等的信息...

      【讨论】:

      • 问题是关于从内核而不是从用户空间中查找信息。
      • 引用的问题是关于 当前 CPU 的数量,而不是关于 总 CPU 数量。
      • 在内核模式下不在用户空间
      【解决方案4】:

      就个人而言,我使用 /proc/cpuinfo 来了解机器上的 CPU。

      【讨论】:

      • cat /proc/cpuinfo |grep 处理器 |wc -l
      • 是的,我确实完全错过了这个答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2010-12-05
      • 2015-05-05
      • 2014-05-20
      相关资源
      最近更新 更多