2015-04-11 2 views
0

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

+0

Вы проверяли использование основного ядра процессора? Один или несколько могут перегружать. –

+0

Да, ни один из сердечников не привязан – hillsm

ответ

1

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

+0

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