免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: fm971
打印 上一主题 下一主题

[C] Linux 多个文件的异步IO问题,高手请进。。。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-05-18 09:44 |只看该作者
原帖由 bittertea 于 2009-5-15 17:59 发表
看看libevent的架构或许对你有帮助, 里面有对IO/信号/timer的封装, 当某种事件发生变化时, 会将事件从事件监视队列(定时器min-heap堆)移到活跃队列里, 按事件发生顺序依次调度执行事件发生回调函数.



原帖由 wwwsq 于 2009-5-15 18:52 发表



内存缓存,然后批量写入。
硬盘连续读写的速度是大大高于随机读写的。



多谢指点。 综合各位的建议, 我现在总结出另一种方案, 请你们看看是否可行?

给每路视频流开4M缓存,当接收到2M数据以上,才调用AIO写。每次只写一个文件。这样可以减少IO调用的次数。
视频流的码率一般不超过4Mbps,即0.5MB每秒。
上述方案有一个问题是, 当某一个文件出错时,可能会阻塞后面的文件。不能实现每个文件的并行。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2009-05-18 14:18 |只看该作者
不要太理想化了,磁盘I/O不会阻塞,就算是有阻塞,肯定是磁盘出问题了,既然磁盘出问题了,那么你的服务阻塞住也没关系了。

论坛徽章:
0
13 [报告]
发表于 2009-05-18 17:13 |只看该作者
原帖由 cookis 于 2009-5-18 14:18 发表
不要太理想化了,磁盘I/O不会阻塞,就算是有阻塞,肯定是磁盘出问题了,既然磁盘出问题了,那么你的服务阻塞住也没关系了。


先谢谢你的观点。  我使用异步IO是考虑到磁盘会是NAS或SAN,所以想尽量减少应用这边的开销,才能最大化并发性能。  估计用100个线程来写100个文件,也不会造成瓶颈。但是再继续扩展其它的服务,可扩展性差一些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP