ffmpeg 没有使用全部 CPU 功率

ffmpeg 没有使用全部 CPU 功率

我有一台 Dell Precision 490 工作站,运行 Ubuntu 11.10,配备两个双核 Xeon 5160 CPU(即 2 个物理 CPU,每个有 2 个核心),我用它来使用 ffmpeg 和 x264 将电视录音(MPEG2)编码为 H264。ffmpeg 以大约 180fps 的速度进行编码,一切运行良好,但 CPU 使用率有点低,徘徊在每个核心 30% 左右,而我预计接近 100%。有人知道这是为什么吗?

这些是我给 ffmpeg 的输入

time ffmpeg -i ch31.m2t -s 640x360 -acodec libfaac -ac 1 -ar 44100 -b:a 56k -vcodec libx264 -preset superfast -b:v 744k ch31_superfast_800.mp4

输出uname -a

Linux dell 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

输出grep -i 核心/proc/cpuinfo

core id     : 0
cpu cores   : 2
core id     : 0
cpu cores   : 2
core id     : 1
cpu cores   : 2
core id     : 1
cpu cores   : 2

输出mpstat -P 全部

Linux 3.0.0-14-generic (dell)   18/12/11    _x86_64_    (4 CPU)

15:46:52     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
15:46:52     all   16.37   10.29    1.20    3.46    0.00    0.13    0.00    0.00   68.54
15:46:52       0   21.43   10.91    1.74    1.06    0.00    0.39    0.00    0.00   64.47
15:46:52       1   15.64    9.95    1.08    5.29    0.00    0.07    0.00    0.00   67.97
15:46:52       2   14.65   10.29    1.03    5.88    0.00    0.03    0.00    0.00   68.11
15:46:52       3   13.79   10.03    0.97    1.59    0.00    0.02    0.00    0.00   73.60

ffmpeg 运行时 top 的输出

top - 15:35:59 up  1:11,  3 users,  load average: 0.00, 0.15, 0.29
Tasks: 162 total,   2 running, 159 sleeping,   0 stopped,   1 zombie
Cpu0  : 29.9%us,  1.7%sy, 31.6%ni, 36.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 30.4%us,  1.3%sy, 25.8%ni, 42.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 38.7%us,  2.0%sy, 22.7%ni, 36.0%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 27.2%us,  1.0%sy, 27.9%ni, 43.5%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4056484k total,  3939144k used,   117340k free,    16532k buffers
Swap:  4190204k total,     9348k used,  4180856k free,  3024616k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                              
 3559 decrypti  20   0  321m  91m 4708 R  240  2.3  45:52.11 ffmpeg

答案1

与大多数代码一样,此代码未能很好地利用多个核心。它可能会非常快速地切换正在加载的核心(大约每秒 100 次),但每次只能充分利用一个核心。

相关内容