【问题标题】:How to figure out disabled cores in a CPU?如何找出 CPU 中禁用的内核?
【发布时间】:2021-05-28 05:18:36
【问题描述】:

我需要找出 CPU 上禁用了哪些内核。我怎样才能以 C/C++ 的方式做到这一点?我知道读取 CAPID6 寄存器是其中一种方法,但我不确定如何完成它。有没有我需要注意的系统调用或技巧?

我的操作系统是 Ubuntu。我有 Xeon Skylake CPU。我可以通过检查 /sys/devices/system/cpu/cpu*/online 来查看特定内核是脱机还是联机,以查看文件是否包含 0 或 1,分别表示脱机或联机。

我还检查了下面的链接:

https://community.intel.com/t5/Software-Tuning-Performance/Understanding-PCICFG-space-information/td-p/1138820

我理解 John McCalpin 的回答,但同样,我正在寻找一种 C/C++ 方式来做到这一点。

【问题讨论】:

  • 您说的是 PCI 设备上的硬件寄存器。读取它是一项特权操作,您不能直接从用户空间代码中进行读取。您必须从内核中获取这些信息,并且打开和解析/sys 文件对我来说似乎是一种很好的方法。没有什么能阻止你从 C/C++(fopen / fscanf / fclose 等)执行此操作。
  • 我猜你可以使用ioperm(2) 之类的东西来获得读取和写入这些端口的权限,但这似乎更麻烦,而不是特别“更多的 C/C++ 方式”。跨度>

标签: intel cpu-architecture micro-architecture


【解决方案1】:

在 Linux 上支持的方法是读取这些相同的文件。你可以用fopen打开它们,用fscanf阅读等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多