首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU的时钟频率&测量时间流逝

CPU的时钟频率&测量时间流逝
EN

Stack Overflow用户
提问于 2013-04-02 07:28:22
回答 1查看 1.2K关注 0票数 1

我想知道"1ms睡眠“需要多少时间。

在内核模块中运行此任务:

代码语言:javascript
复制
rdtscl(aj);
msleep(1);
rdtscl(b);
printk(KERN_INFO "Difference = %lu", (b-a));// Number of clock cycles consumed

我得到的输出:

代码语言:javascript
复制
Difference = 13479219

cat /proc/cpuinfo输出

代码语言:javascript
复制
cpu MHz : 1197.000

用它,我计算了延迟,我得到了11.26万秒。

为什么我不让它在1毫秒左右?

更新:

cat /proc/cpuinfo中的处理器频率可从以下一行获得:

代码语言:javascript
复制
model name  : Intel(R) Core(TM) i3 CPU         540  @ 3.07GHz

=>处理器频率为3.07 GHz。但是不知道这一行"cpu MHz : 1197.000“的含义是什么。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-02 10:55:20

流程解析取决于已运行测试代码的系统上配置的HZ值。HZ值可以是100或1000,如果它是100,那么调度程序只会在10 ms中唤醒一次。大多数在桌面系统中,在最近的发行版中,它将被设置为1000。(您可以在Fedora中的/boot中签入配置文件)。调度程序将仅基于此进行调度,因此,如果调度程序每10 ms唤醒一次,则无法获得小于10 ms的分辨率。或者您需要在内核中使用HR计时器。

代码语言:javascript
复制
kernel-3.4.5 (u3-1 *)$ cat /boot/config-3.6.10-4.fc18.x86_64 | grep HZ
CONFIG_NO_HZ=y
# CONFIG_RCU_FAST_NO_HZ is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000

如果您确实希望延迟,但不需要睡觉,那么您可以使用mdelay,这将只循环指定的时间和返回量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15758500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档