0

如何通过使用经过的时间(执行任何代码部分所需的时间)来推断 linux 操作系统的处理器数量。我有执行特定代码部分所需的时钟滴答。我如何测量机器上的核心从那

4

2 回答 2

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/)提供时间,并参考Timer 函数以使用 C++ 以纳秒为单位提供时间

于 2013-02-05T09:20:42.313 回答
1

我想我们可以这样做:

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

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

于 2013-02-05T09:52:55.960 回答