21dinglei
发表于 2013-06-21 11:18
回复 17# Dsheng
呵呵,非常感谢了!
优先级好像不是关键问题,我层将实时优先级设到最高,效果也是一样的。
应该还是和调度有关系。
因为,系统粒度HZ调到1000之后,现象是有好转的,但是未能根除。
21dinglei
发表于 2013-06-21 11:27
回复 18# blake326
谢谢!长知识了,你说的,我大概看了些资料,但是还是有些不清楚。磁盘IO调度和hrtimer都和系统调度有关系,而磁盘IO调度和dev/文件有什么关系呢?hrtimer理解起来倒还是比较容易。能否较为详细的讲解一下?
谢谢!
blake326
发表于 2013-06-21 12:38
回复 20# 21dinglei
事件丢失的时候,查看下进程状态,系统负载,cfq负载
比如进程的调用堆栈dump_backtrace,进程状态。
Dsheng
发表于 2013-06-22 16:31
回复 19# 21dinglei
使用cyclictest测试一下系统的调度时延吧。
https://rt.wiki.kernel.org/index.php/Cyclictest
21dinglei
发表于 2013-06-25 14:18
回复 22# Dsheng
谢谢!通过改变系统粒度HZ=1000,现象有好转,在两个线程之间切换的时候暂未发现有丢失事件的情况,在网上找到一个Linux实时补丁,现在准备加上试试。
EZWORD
发表于 2013-06-25 19:13
一定要用信号?netlink,select不可以吗。
21dinglei
发表于 2013-06-26 10:30
回复 24# EZWORD
这些都是异步的,应该机制都是差不多的吧?我就做了两个典型,一个异步的信号,一个同步的input。
Dsheng
发表于 2013-06-26 11:10
回复 23# 21dinglei
我最近也在研究实时抢占补丁,一起交流:handshake
灌水菜鸟
发表于 2013-06-26 12:56
跟HZ无关,尝试中断线程化,无限提高用户态进程优先级。完全不丢比较难,可以参照tick把丢了的中断找补回来。
最后,在用户态玩这个真的很少见。
Dsheng
发表于 2013-07-09 23:22
回复 1# 21dinglei
楼主能不能说说最终解决方案啊,让我们也学习一下
:D