HI3559A系统卡死问题-修复
结论:
1 rtsp_client绑定了cpu3核心,cpu3被占满了,导致vdec线程轮到cpu3执行的时间会变长,导致vdec_get方法不及时,导致vdec缓冲区满了,导致vdec_send失败,导致vdec的vb视频帧vpss增加,如果打开IA,那么VB就不够用了。
2 卡顿的原因,我认为是vdec线程获取视频流时,会调用linux中断或系统调用,当跑到cpu3时,就会变得异常卡顿,返回很慢或不返回,进而导致任何与此进程有关的其他进程也卡顿,比如ps、top等命令
3 尝试解决,设想可以通过把vdec线程绑核心cpu2解决,失败,get_frame仍然有很慢的情况,我估计海思底层的进程在cpu3执行的时候卡住了。
4 彻底解决,问题确定是由于recvfrom失败后的无限循环导致的,在晓熙的帮助下,在live555中找到了释放接口,在recvfrom失败时候调用此接口。
排查比较麻烦,具体如下:
1 第一次问题发生在2020.01.17,当时的rtsp_client用的是老版本,丢帧严重。
(1)内存泄漏,由于系统卡死,ia结果出的非常慢,通常几秒一次,视频缓存的datacenter不断增大,其实不是泄漏,应该是把缓存吃没了
(2)卡死原因,当时因为设备重启,可分析资源不多,从log分析,