在观察线上录制进程状态时,发现录制进程的CPU占用的非常高,立足长远考虑,还是必须降下来。采取一些优化措施,最后降低了20%的CPU。
目录
一、优化方向
通过调试发现,录制在视频编码这块占的CPU较大,跟视频编码器相关的主要是分辨率和码率,于是从这个方向着手。在将这部分进行降低后,CPU确实降低了很多,但还是很高,于是在想音频编码过程是不是也可以优化下,与音频编码器相关的是音频的码率和编码的音频数据量,于是从码率和双通道改单通道着手,进一步进行了优化。两个方向优化后,CPU值还是高于心里预期,想想还能不能再优化下,一时也没有啥思路。晚上下班后在家附近的运河散步时,也在思考这个问题。也许是潜意思的作用,突然想到能不能优化下线程等待取数据的地方,把usleep缓成互斥锁加条件变量的通知机制,这个让我想起惊群效应,尽量避免CPU在线程间切换,这样肯定能降低CPU,于是试试,果然有效果,降低了6%,总体CPU也降低到了预期。