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

标签 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 内核 4.0.4-202 Fedora 21 架构:x86_64 中央处理器:8 在线 CPU 列表:0-7 每核心线程数:2 型号名称:Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz 中央处理器频率:967.195 CPU 最大频率:3900.0000 CPU 最小 MHz:800.0000

最佳答案

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

因此无法保证它在一段时间内不会被暂停。如果从一秒到下一秒的周转发生在进程等待 CPU 时,下一次 clock() 调用将发生较晚,因此出现“超过一秒”的增量。

或者,您看到的变化可能是由于 clock() 调用中发生的一些舍入造成的。

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

关于linux - 为什么在许多情况下声称的实际时钟/秒大于 1,000,000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652395/

相关文章:

linux - 测试 :compile error

linux - 使用 shell 脚本比较 cpuusage 值

linux - 限制允许使用进程树的 CPU 百分比?

shell - Unix将月份名称转换为数字

javascript - 计算重叠时间段的持续时间

linux - 构建 LFS : Segmentation fault with make on a graphical shell

c - 如何解决从 mmap() 返回的字符串中缺少 NUL 终止符的问题?

java - 如何使用Unix重定向在滚动文件中重定向stdout和stderr

arrays - 算法 - 最小减法

mysql - 从年份和月份变量中获取月份的第一天和最后一天