计算linux中的处理器核心数

时间:2013-02-05 09:15:31

标签: linux

如何通过使用经过的时间(执行任何代码段所花费的时间)来推断linux操作系统的处理器数量。我有执行特定代码段所花费的时钟滴答。我如何衡量从那个

的机器上的核心数量

2 个答案:

答案 0 :(得分:2)

您可以使用

获取有关CPU(处理器数量和内核数量等)的信息

cat /proc/cpuinfo

但如果您正在尝试计算在执行linux-kernel中的特定代码时所采用的时钟滴答,您可以尝试。

#include <sys/time.h>

unsigned long ini,end;
preempt_disable();
rdtscl(ini);
...your code....
rdtscl(end);
preempt_enable();
printk("time lapse in cpu clics: %lu\n",(end-ini));

了解更多详情http://www.xml.com/ldd/chapter/book/ch06.htmldownload.intel.com/embedded/software/IA/324264.pdf,如果您的代码需要更多时间,那么您也可以有效地使用jiffies。

对于用户空间应用,您可以使用各种计时功能,以纳秒分辨率或oprofile(http://oprofile.sourceforge.net/about/)&amp;参考Timer function to provide time in nano seconds using C++

答案 1 :(得分:1)

我想我们可以这样做:

编写一些代码来执行一些繁重的数学工作,这些代码可以并行运行 - 例如用于查找素数的简单方法。然后在多个线程中运行它,从一个开始,然后向上运行。在某些时候,确定N个第一个素数所需的时间将是,线程数将与(可用)处理器核心数相同。

但是找到处理器的数量是一种非常笨拙的方法,它几乎肯定不适用于高负载的系统,或者运行在虚拟机上的系统等等。