日期:2014-05-16  浏览次数:21078 次

求助C# IOCP性能并发
各位好:

是这样的。鄙人做了一个模拟工具。模拟1000路终端,接收流媒体码流。单路3M。
工具运行的环境很强大。10G网卡。16核。

编程采用的是C#的 Async 接口。 工具只负责接收码流,没别的复杂逻辑。 
运行发现,CPU占用很高,达到40-50%。而且接收码流速度很慢,按上述配置模拟,只能达到1G的流量,离预期相差很远。

请问各位达人,是否有用C# 的 IOCP 进行过这种狂接收码流的处理,是否有过优化CPU以及提高接收速度的经验,烦请指教,不胜感激。


------解决方案--------------------
没做过这种,说点不太靠谱的想法
在IOCP启动之前,初始化缓存资源到最大上限。
在接受过程中,重复使用开始时初始化的资源。
动态监控资源使用量,空闲过多资源时,动态清理。反之亦然。
无限量的使用Async导致,后台线程众多。可以使用队列优化,通过一定数量(可控数)的线程来操作队列。
优化关键部分的处理(如高频率使用的代码部分)