免费注册 查看新帖 |

Chinaunix

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

[时钟管理] [求助][ARM]统计中断关闭时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-13 10:58 |只看该作者 |倒序浏览

在ARM&linux平台上如何统计代码流程当中
spin_lock_irqsave  -> spin_unlock_irqrestore
关中断的大概时间, 起码能够精确到毫秒级别

在x86的平台上可以使用rdtsc这类硬件的高精度定时器来获取高精度的动态时间, 但是在ARM上应该如何操作那, 请各位ARM高手给点建议。

目前使用的HZ是128, NO_HZ配置打开。
我看了一些获取时间的接口例如current_kernel_time/do_gettimeofday等等。
但是感觉他们的精度应该是达不到需要, 因为我看有些时间是依赖中断去更新的, 因此在关中断的上下文里面获取这个时间
即使静态的精度再高都没有意义。

查了一部分信息, 感觉可行的可能有
1. 访问PMU, 获取CPU cycle用来转换时间
2. 通过特定的watchdog 定时器
3. 通过RTC(但是不缺定RTC的精度能符合需求)

但是对ARM 实在不怎么熟悉, 目前使用的CPU平台是瑞萨的R8A7791, 请各位指教啊。
多谢~

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2014-10-13 11:26 |只看该作者
1,2 都可以呀。3精度太低。

论坛徽章:
0
3 [报告]
发表于 2014-10-13 20:06 |只看该作者
本帖最后由 comba_sellie 于 2014-10-13 20:07 编辑

查看内核的do_gettimeofday函数实现,只要硬件支持 原则上是可以精确到ns级的

搜索clocksource 选择最高rate的结构体 里面有个read方法 那个应该就是你的硬件上所能达到的最高精度时钟。

论坛徽章:
0
4 [报告]
发表于 2014-10-14 16:03 |只看该作者
spin_lock_irqsave  -> spin_unlock_irqrestore
这个时间都用统计?  本来spinlock的工作本来就是快速返回的,看看代码就知道了。

统计这个世界干啥用的,好像路子不是很对啊

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
5 [报告]
发表于 2014-10-14 22:42 |只看该作者
hmsghnh 发表于 2014-10-14 16:03
spin_lock_irqsave  -> spin_unlock_irqrestore
这个时间都用统计?  本来spinlock的工作本来就是快速返回 ...


理论是的,但是代码是人写的,写得不好就会导致关中断时间过长,这对系统的影响是致命的。因此,对关中断的时间进行统计是对Linux系统可维可测能力的重要补充。

论坛徽章:
0
6 [报告]
发表于 2014-10-15 09:20 |只看该作者
看错啦
竟然还有PMU这么准的计数机制 期待高人解答

论坛徽章:
0
7 [报告]
发表于 2014-10-15 09:20 |只看该作者
看错啦
竟然还有PMU这么准的计数机制 期待高人解答

论坛徽章:
0
8 [报告]
发表于 2014-10-15 11:09 |只看该作者
回复 2# Tinnal
多谢回复 但是我目前还没有找到一个比较简单的接口去访问PMU


   

论坛徽章:
0
9 [报告]
发表于 2014-10-15 11:11 |只看该作者
回复 3# comba_sellie

恩多谢, 但是我现在比较担心的是有些时间的更新是依赖于中断的, 在终端被disable的情况下可能取不到相应的时间, 也就是说这个接口本身
的静态的精度是够的,但是动态的精度不够。


   

论坛徽章:
0
10 [报告]
发表于 2014-10-15 16:42 |只看该作者
我用的架构 read实现方式是直接读CPU内部的寄存器 计数是实时更新的
难道你的没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP