【发布时间】:2012-12-24 06:31:34
【问题描述】:
我正在尝试通过 Linux 内核模块以非常高的精度测量 Linux 内核中的某些代码所花费的时间。
为此,我尝试了 rdtscl(),它给出了代码中使用的时钟滴答数,如下所示:
unsigned long ini, end;
rdtscl(ini);
//some code...
rdtscl(end);
printk("time taken=%lu ticks",end-ini);
正如我提到的 http://en.wikipedia.org/wiki/Time_Stamp_Counter 所说,TSC 是自 Pentium 以来所有 x86 处理器上都存在的 64 位寄存器。那么,如果我有双核处理器,这个计数器会出现在两个核中还是只有一个,因为它只有一个处理器但双核?
第二个问题是:我有 Intel Xeon i3 处理器,它有 4 个处理器,每个处理器有 2 个内核。那么,测量时钟滴答,将给出单个处理器的滴答声还是所有4个处理器的加法?
【问题讨论】:
-
时钟滴答与运行的核心有关
rdtscl
标签: c linux performance linux-kernel multiprocessing