пятница, 16 сентября 2011 г.

И еще про FFmpeg и многопроцессорность

В продолжение предыдущей заметки - решил попробовать новую версию FFmpeg (от 15.09.2011) на машине с Intel® Core™ i7-930 (4 ядра, каждое с Hyper-Threading, итого 8 логических процессоров), ну думаю, щас полетит :), старая-то версия FFmpeg загружала этот процессор не более чем на 12%.
Полетел, но не шибко высоко, загрузка где-то на 40%, т.е. то что 4 ядра новый FFmpeg уже видит, а то что за счет Hyper-Threading можно еще в 2 раза число потоков увеличить - пока нет :(
Но эффект от 4 ядер все-таки есть - все тот же файл конвертировался на Intel® Core™ i7-930 всего 28 мин.

4 комментария:

  1. Есть мнение, что гипертрединг может и отрицательно сказываться на производительности. Может, разработчики его разделяют, и потому не переусердствуют?

    ОтветитьУдалить
  2. Впоследствии оказалось еще интереснее, чем я описал - если убрать команду на изменение разрешения (-s 720x296), оставив только перекодирование, то ffmpeg вполне себе начинает забирать 99% CPU даже на процессорах с Hyper-Threading. Ну понятно вообще, учитывая что там используется с десяток разных библиотек каждая со своим подходом к многопоточности.

    ОтветитьУдалить
  3. Да уж - с одной стороны нечего свои велосипеды изобретать, с другой, оказывается, не все велосипеды без болгарки совместимы друг с другом :о))

    ОтветитьУдалить
  4. "... учитывая что там используется с десяток разных библиотек каждая со своим подходом к многопоточности." - ffmpeg использует только одну библиотеку для поддержки потоков - pthreads.
    http://ffmpeg-users.933282.n4.nabble.com/ffmpeg-multithreading-enable-pthreads-td937756.html

    ОтветитьУдалить