我在开发板上移植了live555MediaServer,可以实现正常的传输。但似乎性能很不高,当进行16路D1的数据传输时,系统从硬盘上读取视频文件,CPU的idle时间几乎为0,以下是我用top命令看到的系统性能:
Live555MediaServer 进程占用CPU-- 50%
用户态时间: 17%
内核态时间: 23%
idle时间: 0%
io时间 : 50%
如此,还没运行其他应用,CPU就已经被全部占满了,显然无法工作。
各位帮帮忙,告诉我有没有改进的方法(代码最好),或者其他的替代live555的方案(除了gstreamer)
------解决方案--------------------------------------------------------
提高硬盘IO的效率,你不妨做个测试,只是硬盘读取38M数据看看占用多少cpu。
如果确认是IO的问题,不妨尝试采用dio来提高读取的效率。
------解决方案--------------------------------------------------------
可参考 基于Linux的Socket网络编程的性能优化。 我以前就对live555的接收模块做了优化,CPU占用小30%。