[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
Linux 实时优化:批量优化 mdelay
Wu Zhangjin 创作于 2014/08/24
问题描述
根据 Linux时钟API使用详解:事关实时响应、功耗与调试,如果想批量找到内核中的 mdelay() 调用,并根据实际情况优化为 usleep_range()或者msleep()等,该如何?
问题分析
首先需要确认哪些代码是我们用到的,接着就是找出这些代码中的 mdelay() 调用,最后就是作针对性的优化。
解决方案
下面这个就可以找出所有用到的mdelay,进入到使用的Linux内核源代码目录下执行即可:
$ find ./ -name "*.o" | sed -e "s/.o$/.c/g" | xargs -i grep -uil mdelay {} 2>/dev/null
之后就是根据 Linux时钟API使用详解:事关实时响应、功耗与调试 的原理进行优化:
- 原子上下文或者某些特定场景的mdelay()保留,如果太大,考虑是否可以更小,或者把部分操作延迟到workqueue执行
- 非原子上下文,把 > 100ms, < 20ms 的替换为 usleep_range(),记得加一个范围,比如原来是mdelay(5),并且这个delay可以更长,比如6ms,则可以优化为usleep_range(5000,6000)。
- 非原子上下文,把 > 20ms 的替换为 msleep()。
- 如果超过1s,请用delayed workqueue或者timer,抑或是确实需要是才用alarm
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |