我是不是太快了,数不清妖孽

Am I too fast to count jiffies?

本文关键字:数不清 是不是      更新时间:2023-10-16

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

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

我建议您使用 rdtsc 指令,该指令可能作为编译器内部函数提供。此值每 1 个 CPU 时钟周期递增一次,因此通过除以频率,您可以获得经过的时间量。您也可以使用内联程序集实现它。

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

相关文章: