3

我在不同的数据库系统上做了一些本地实验。/proc/status我在执行查询之前和之后收集(总结)CPU 信息。差异应该告诉我查询运行期间的 jiffies 或 USER_HZ 的数量。clock_gettime()但是当(根据)查询的运行时间低于时,差异为零0.001 seconds。这是为了快速利用 CPU 信息还是我错过了其他东西?

4

1 回答 1

1

从 Linux 内核 2.6.0 开始,一瞬间是 1/250 秒,或 0.004 秒 [参见time(7)]。你永远不会得到比这更小的分辨率。

我建议您使用该rdtsc指令,它可能作为编译器内在函数提供。这是每 1 个 CPU 滴答声递增一次,因此通过除以频率可以得到经过的时间量。您也可以使用内联汇编来实现它。

检查实际上有点荒谬,/proc/status因为很有可能打开文件描述符并读取内容实际上需要比您的查询执行更长的时间。rdtsc更可靠。

于 2012-05-01T02:44:45.457 回答