我在考虑用C在Linux中获得物理CPU。我知道,我可以这么做:

if(!(cpus = popen("cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
", "r")))
{
    // ...
}

但这不是重点,当我没有安装grep时,它就不会工作。我想出了另一个主意:
简单解析/proc/cpuinfo
统计物理ID数:
if(sscanf(buff, "physical id     : %d", &physicalID) == 1)
    i++;

将它们保存到数组中:
if(sscanf(buff, "physical id     : %d", &physicalID) == 1)
{
    ids[i] = physicalID;
    i ++;
}

检查数组中是否有不同的数字,如果有,则计数它们=它将给出物理套接字(CPU)的数量,对吗?
我做到了,但我不确定它是否永远是真的…那么,如何计算内核、逻辑CPU并检查是否启用了超线程呢?如何使用/proc/cpuinfo

最佳答案

lscpu返回了很多关于cpu、套接字数量、内核数量、每个内核的线程数量的有用信息(这可以让您确定是否启用了hyperheading)。
不确定ARM CPU等的性能
高温高压
保罗

关于c - 在Linux中获取物理CPU计数。解析/proc/cpuinfo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22683509/

10-11 18:48