web-dev-qa-db-ja.com

ffmpegがCPUパワーをフルに使用していない

Ubuntu11.10を実行するDellPrecision 490ワークステーションがあり、2つのデュアルコアXeon 5160 CPU(つまり、2つの物理CPU、それぞれ2つのコア)があり、ffmpegとx264を使用してTV録画(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

name -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 core/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 ALLの出力

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 - 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
2
Anthony Agius

ほとんどのコードと同様に、このコードは複数のコアをうまく​​利用できていません。負荷をかけているコアを非常に迅速に(1秒間に約100回)切り替えることができますが、一度に1つのコアしか十分に活用できません。

2
David Schwartz