2

У меня есть рабочая станция Dell Precision 490, работающая на Ubuntu 11.10, с двумя двухъядерными процессорами Xeon 5160 (т.е. 2 физических процессора, по 2 ядра в каждом), которые я использую для кодирования телевизионных записей (MPEG2) в H264 с использованием ffmpeg & x264. ffmpeg кодирует со скоростью около 180 кадров в секунду, и все работает хорошо, но загрузка процессора немного низкая, колеблется около 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 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

Вывод top во время работы 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

1 ответ1

2

Как и большая часть кода, этот код не очень хорошо использует преимущества нескольких ядер. Он может переключать то ядро, на которое он загружает, очень быстро (около 100 раз в секунду), но он может в полной мере использовать только одно ядро за раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .