我正在开发一个嵌入式Linux项目,它将ARM9连接到硬件视频编码器芯片,并将视频写入SD卡或USB记忆棒.软件体系结构涉及将数据读入缓冲池的内核驱动程序,以及将数据写入已安装的可移动设备上的文件的用户空间应用程序.
我发现超过一定的数据速率(大约750kbyte/sec),我开始看到用户视频写入应用程序停止大约半秒钟,大约每5秒钟.这足以导致内核驱动程序用完缓冲区 - 即使我可以增加缓冲区的数量,视频数据也必须与实时进行的其他事情同步(理想情况下在40ms内).在这5秒的"滞后峰值"之间,写入在40ms内完成(就应用程序而言 - 我很欣赏它们被OS缓冲)
我认为这种滞后峰值与Linux将数据刷新到磁盘的方式有关 - 我注意到pdflush旨在每5秒唤醒一次,我的理解是这将是写作的内容.一旦停止结束,用户态应用程序就能够快速服务并写入积压的缓冲区(没有溢出).
我认为我写的设备具有合理的最终吞吐量:从内存fs复制15MB文件并等待同步完成(并且usb棒的灯停止闪烁)给了我大约2.7MBytes/sec的写入速度.
我正在寻找两种线索:
如何阻止突发性写入停止我的应用程序 - 可能是进程优先级,实时补丁,或调整文件系统代码以连续写入而不是匆忙写入?
如何让我的应用程序了解文件系统在写入积压和卡/棒的吞吐量方面发生了什么?我能够动态地改变硬件编解码器中的视频比特率,这比丢帧更好,或者在最大允许比特率上强加一个人工上限.
更多信息:这是一个200MHz ARM9,目前运行基于Montavista 2.6.10的内核.
更新:
我希望这是有道理的.stackoverflow上的第一个嵌入式Linux问题?:)
我正在WPF中构建一个实时多线程应用程序,但我在更新UI时遇到了困难.
我有一个后台工作线程,其中包含确定要发送到市场的交易的逻辑.当有效交易发送到市场时,我通过主应用程序窗口中的事件接收这些交易的状态更新.我有其他活动,我收到实时价格更新.
通过这些活动,我更新了UI.现在看来,我在整个应用程序中如此迅速地接收事件,UI无法跟上接收事件的速度 - 导致UI缓慢更新或根本不更新.基本上UI冻结了.在所有事件都被触发后,UI再次缓慢响应.一旦完全响应,UI就会显示我期待的数据.
我的问题是,如何在接收事件的同时实时更新UI?我一直在努力解决这个问题,所以任何帮助都会受到赞赏.
提前致谢!
我需要在我的Web应用程序中添加一个"实时"元素.基本上,我需要检测存储在SQL Server表中的"更改",并在发生更改时更新UI的各个部分.
我目前通过民意调查这样做.我每隔3秒向服务器发送一个ajax请求,要求进行任何新的更改 - 然后返回并处理这些更改.它有效,但我不喜欢它 - 这意味着对于每个浏览器,我将经常发出这些请求,并且服务器将始终忙于处理它们.简而言之,它不能很好地扩展.
是否有任何聪明的替代方案可以避免轮询开销?
编辑
为了完整性,我正在更新这个,以提及我们最终使用的解决方案 - SignalR.它的操作系统来自微软.它越来越受欢迎,我可以衷心地推荐这个,或者我们也看过的WebSync.
所以我是一个没有经验的Python编码器,我收集的内容可能是一个相当复杂的需求.我是一名认知科学家,我需要精确的刺激显示和按钮按压检测.我被告知,最好的方法是使用实时操作,但不知道如何去做.理想情况下,每次试验,程序都会实时运行,然后一旦试验结束,操作系统就可以回到不那么细致的状态.将有大约56项试验.可能有办法从我的python脚本编码这个?
(然后,我需要知道的是,当实际显示刺激时.实时方法会向我保证刺激会在我想要的时候显示,自上而下的方法.另一方面,我可以如果更容易知道记录何时计算机实际有机会显示它,那么采取更自下而上的方法.)
例如,假设有someFunction()单击按钮时将执行的Javascript代码,然后单击该按钮.我想知道是否有某种方法可以看到它someFunction()刚刚执行.有没有办法实时查看Chrome中执行的功能?
如果是检查器中的"个人档案"选项卡可以实现这一目的,那么您究竟如何实时了解哪些功能实时触发?
编辑2012年1月21日12:36p太平洋:从下面的Brian Nickel的评论中,Inspector中的Timeline选项卡是查看实时情况的方法,但是如何在时间轴中看到已执行函数的名称?
目标硬件平台具有有限的马力,和/或您希望实时作业将最小的开销放在系统上.这是双内核通常比本机抢占系统更好的地方.
从这里:http://www.xenomai.org/index.php/Xenomai : Roadmap#Xenomai_3_FAQ
Preempt_rt确实抢占了整个Linux.以何种方式抢占Linux会对系统造成负担?
与Xenomai相比,FAQ中讨论了preempt_rt.
我一直在努力记录当前项目的所有Storm指标的含义.
在此过程中,我从该组响应以及github收集了数据.
虽然有些指标非常自我解释,但我对一些螺栓指标感到困惑.
例如,Process Latency和Execute Latency之间有什么区别?
通过此Google论坛上的帖子,我收集了以下信息:
列表项处理延迟=调用ack时的时间戳 - 执行传递元组时的时间戳
列表项执行延迟=执行函数结束时的时间戳 - 执行传递时的时间戳元组(来源:http://goo.gl/3KRAl)
和
根据我在风暴用户界面中看到的内容,我的执行延迟几乎总是大于进程延迟.怎么会这样?任何人都可以帮我确定两种延迟的确切定义吗?
提前致谢!
我发现这个很棒的程序(html编辑器)叫做Brackets,而且是Adobe的.现在我得到编辑器的原因是因为我想要实时预览PHP代码,但我后来发现我需要一个Wamp服务器.
现在,我有兴趣制作一个关于页面,但我无法预览.实时预览基本网址为空,当我尝试预览时,我得到:> http://puu.sh/aDkET/4209ec1192.png <并且闪电是半橙色(我听说它需要是红色的工作).我已经尝试了很多...输入实时预览基本URL到http(分号)// localhost:(insertporthere)/ < - Wamp Server,只尝试了localhost,把它留空,我不知道怎么做这个工作..我卡住了,我基本上需要真正的预览..
拜托,请帮帮我!D:我在网上寻找解决方案,但没有.如果可以,一步一步的教程将非常感谢:)
亲切的问候, - PiguFilms
我目前正在使用以下代码,这将获取推文,然后将其传递给处理的函数.但这不是实时的.
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
mentions = api.mentions_timeline(count=1)
for mention in mentions:
processText()
Run Code Online (Sandbox Code Playgroud)
我也查看了流媒体推文,但我还没有找到一种方法来流式提及.
我想知道Firebase的性能(延迟,吞吐量)是否足以在线使用实时MMO游戏.
有足够知识的人可以分享他们对此的看法吗?
可以使用Firebase代替套接字进行实时游戏吗?
real-time ×10
linux ×2
python ×2
apache-storm ×1
asp.net-mvc ×1
css ×1
editor ×1
embedded ×1
filesystems ×1
firebase ×1
html ×1
javascript ×1
metrics ×1
mmo ×1
preempt-rt ×1
refresh ×1
socket.io ×1
tweepy ×1
twitter ×1
video ×1
websocket ×1
wpf ×1
xenomai ×1