我在不同的数据库系统上做了一些本地实验。我在执行查询之前和之后从/proc/status
收集(总结)CPU信息。区别应该告诉我查询运行时期间的jiffies或USER_HZ的数量。但是当(根据clock_gettime()
)查询的运行时间低于0.001 seconds
时,差异为零。这是为了快速利用CPU信息还是我遗漏了别的东西?
答案 0 :(得分:1)
从Linux内核2.6.0开始,jiffy是1/250秒,或0.004秒[见time(7)]。你永远不会得到比这更小的分辨率。
我建议您使用rdtsc
指令,该指令可能作为编译器内在函数提供。这会每1个CPU滴答一次递增,因此除以频率,您就可以获得通过的时间量。您也可以实现它with inline assembly。
检查/proc/status
实际上有点荒谬,因为打开文件描述符和读取内容的可能性实际上比查询执行时间要长。 rdtsc
更可靠。