为什么在许多情况下据称实际的时钟/秒大于1,000,000?

时间:2016-02-26 12:59:13

标签: linux unix time

在问题CLOCKS_PER_SEC not actually clocks per sec之后,我的多核机器上的相同代码给出了:

CLOCKS_PER_SEC = 1000000
Actual clocks per second = 89815
Actual clocks per second = 999801
Actual clocks per second = 998912
Actual clocks per second = 999911
Actual clocks per second = 1000019
Actual clocks per second = 999997
Actual clocks per second = 1000194
Actual clocks per second = 1000182
Actual clocks per second = 1000216
Actual clocks per second = 999990

为什么在少数情况下实际时钟/秒大于1,000,000?由于多核?我们如何解释这个?

我正在硬件上运行Linux kernel 4.0.4-202 Fedora 21 Architecture: x86_64 CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Model name: Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz CPU MHz: 967.195 CPU max MHz: 3900.0000 CPU min MHz: 800.0000

1 个答案:

答案 0 :(得分:0)

在繁忙的系统上,正在运行的测试程序不会被授予所有CPU电源。

因此无法保证在一段时间内不会被暂停。如果在进程等待CPU时发生从一秒到下一周的转换,则下一个clock()呼叫将发生得晚,因此"超过一秒"增量。

或者,您看到的变化可能是由于clock()来电中发生了一些舍入行为。

无论如何,我不会在各种系统上重现它,无论是单核还是多核。