我在考虑用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/