libav ffmpeg проблема с производительностью нескольких потоков

У меня есть программа, способная одновременно генерировать 5 транспортных потоков mpeg. каждый поток имеет свой собственный контекст и выполняется в независимом потоке. когда активен только один поток все работает отлично. как только я активирую другой поток, моя частота кадров сильно падает. оба потока по-прежнему работают правильно, только частота кадров низкая. я отследил его до вызова av_interleaved_write_frame. оно увеличивается примерно с 4 мс при одном потоке до более 50 мс при двух. Я работаю на 6-ядерном процессоре haswell-e с гиперпоточностью, и машина даже близко не перегружена.


person hillsm    schedule 11.04.2015    source источник
comment
Вы проверяли использование отдельных ядер процессора? Один или несколько могут перегружаться.   -  person Mike Versteeg    schedule 12.04.2015
comment
да, ни одно из ядер не привязано   -  person hillsm    schedule 12.04.2015


Ответы (1)


Сначала проверьте, запускаете ли вы два отдельных процесса одного и того же приложения, каждое приложение с одним потоком, производительность хорошая в обоих экземплярах. Если да, я думаю, что это может быть связано с проблемой многопоточности в вашем приложении. Пожалуйста, проверьте, если вы активируете более одного потока в разных потоках, как эти потоки синхронизируются. Это может быть проблема синхронизации потоков в вашем коде.

person M.Mahdipour    schedule 11.04.2015
comment
между потоками нет синхронизации, они полностью независимы. запуск двух отдельных копий этого приложения проблематичен. возможно, я могу сократить до более простого теста - person hillsm; 11.04.2015