免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1157 | 回复: 0
打印 上一主题 下一主题

修改定时器时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-07 09:19 |只看该作者 |倒序浏览
为了测试linux下面usleep, nanosleep, select哪个函数delay时间更准确,因此我要在定时器频率200Hz和1000Hz下面分别测试。这样我就需要将默认的频率修改到1000Hz。

法一:如果可以透过make menuconfig来配置的话, 那么这个选项在“Processor type and features  --->Timer frequency” 选择1000Hz。

法二:但是如果你的内核编译是通过脚本文件来实现的化, 那最好去修改'kernel\arch\arm'下的Kconfig文件,在文件中找到类似如下的部分:
config HZ
int
default 128 if ARCH_L7200
default 200 if ARCH_EBSA110 || ARCH_S3C2410
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default 100
注意将default 100修改为1000, 并make调前3行。
config HZ
int
#default 128 if ARCH_L7200
#default 200 if ARCH_EBSA110 || ARCH_S3C2410
#default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default 1000

验证是否修改成功:
在‘kernel\sched’中的一个叫‘asmlinkage void __sched schedule(void)’的api中没10000次打印一下内核调度,理论上100Hz,比1000Hz慢10倍,很容易感觉出来。

附上定时器性能测试结果:
usleep
200Hz
select
200Hz
nanosleep
200Hz
usleep
1000Hz
select
1000Hz
nanosleep
1000Hz
8998
9001
8997
8999
9000
9000
8997
9001
8997
8998
9000
8999
8996
9000
8996
9000
9000
8999
8996
9000
8996
9000
8999
9000
8996
9000
8996
9000
8999
9000
8996
9001
8996
9000
9000
8999
8996
9000
8996
9000
9000
8999
8996
9000
8996
9000
9000
9000
8996
9001
8996
8998
9000
8999
8996
9000
8996
9000
9000
9000
8996
9000
8996
8999
9000
8999
8997
9000
8997
9000
9000
9000
8996
9000
8996
9000
9000
9000
8996
9000
8996
9000
9000
9000
8996
9001
8996
8999
9000
9000
8996
9000
8996
8999
9000
9000
8996
9000
8996
9000
9000
8999
8996
9001
8996
9000
9000
8998
8996
9000
8996
9000
9000
9000
8996
9000
8996
9000
9000
8999
实验条件:设置定时器10000Ms,分别用3种方式sleep 1000Ms, 读取定时器剩余时间。(越接近9000越准确)

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99283/showart_2112521.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP