From: Cosmin Stejerean via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: "FFmpeg development discussions and patches" <ffmpeg-devel@ffmpeg.org>
Cc: "Cosmin Stejerean" <cosmin@cosmin.at>
Subject: Re: [FFmpeg-devel] [PATCH v3] ffmpeg CLI multithreading
Date: Wed, 6 Dec 2023 20:29:11 +0000
Message-ID: <0101018c40d1f5e9-4992382c-2ab3-48d4-a2e5-c872414b7b4f-000000@us-west-2.amazonses.com> (raw)
In-Reply-To: <170189136997.1197.12625006990874818639@lain.khirnov.net>
> On Dec 6, 2023, at 11:36 AM, Anton Khirnov <anton@khirnov.net> wrote:
>
>> In some cases the performance penalty because of threading is quite
>> significant:
>>
>> Example command line:
>>
>> ffmpeg -f lavfi -i sine -af volume=6dB -f null none
>>
>> After latest threading changes: speed=810x
>> Before latest threading changes: speed=1.13e+03x
>> With 6.0 branch: speed=1.43e+03x
>> With 5.1 branch: speed=2.92e+03x
>>
>> This is a significant decline from 5.1, getting slower with each
>> release... Is there anything that can be done about this?
>
> Would guess this is caused by overhead from tons of tiny frames. So
> 1) generate larger frames
Larger frames would definitely help. With the command as is I get 4.75e+03x on 6.0 and 2.81e+03x on latest mutli-threading branch.
However when adding asetnsamples this improves considerably. For example using asetnsamples=2048 as follows runs at 5.6e+03x on the multi-threading branch
./ffmpeg -f lavfi -i sine,asetnsamples=2048 -af volume=6dB -f null none
and it can be further improved by increasing the asetnsamples values to 4096 for example (9.18e+03x).
There is still a penalty as you could do asetnsamples without multi-threading and get even higher performance,
but given the general benefits of multi-threading and the fact that it's possible to increase the performance of this
usecase arbitrarily by using larger and larger frames I think that's an acceptable tradeoff for this use case.
- Cosmin
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-12-06 20:29 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 10:27 Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 01/10] fftools/ffmpeg_filter: make sub2video heartbeat more robust Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 02/10] fftools/ffmpeg_filter: move filtering to a separate thread Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 03/10] fftools/ffmpeg_filter: buffer sub2video heartbeat frames like other frames Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 04/10] fftools/ffmpeg_filter: reindent Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 05/10] fftools/ffmpeg_mux: add muxing thread private data Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 06/10] fftools/ffmpeg_mux: move bitstream filtering to the muxer thread Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 07/10] fftools/ffmpeg_demux: switch from AVThreadMessageQueue to ThreadQueue Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 08/10] fftools/ffmpeg_enc: move encoding to a separate thread Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 09/10] fftools/ffmpeg: add thread-aware transcode scheduling infrastructure Anton Khirnov
2023-12-06 10:27 ` [FFmpeg-devel] [PATCH 10/10] fftools/ffmpeg: convert to a threaded architecture Anton Khirnov
2023-12-06 11:22 ` Paul B Mahol
2023-12-06 11:31 ` Anton Khirnov
2023-12-06 10:51 ` [FFmpeg-devel] [PATCH] web: add a news entry for ffmpeg CLI threading Anton Khirnov
2023-12-06 10:55 ` [FFmpeg-devel] [PATCH v3] ffmpeg CLI multithreading Nicolas George
2023-12-06 12:06 ` Zhao Zhili
2023-12-06 12:10 ` Nicolas George
2023-12-06 12:30 ` Anton Khirnov
2023-12-06 12:58 ` Nicolas George
2023-12-06 17:31 ` Anton Khirnov
2023-12-06 20:14 ` Nicolas George
2023-12-06 20:53 ` Vittorio Giovara
2023-12-06 19:29 ` Marton Balint
2023-12-06 19:36 ` Anton Khirnov
2023-12-06 20:16 ` Nicolas George
[not found] ` <6F5C6E5F-1538-47F0-9C71-CA10A1D38C3F@cosmin.at>
2023-12-06 20:29 ` Cosmin Stejerean via ffmpeg-devel [this message]
2023-12-06 21:00 ` Anton Khirnov
2023-12-06 20:29 ` Anton Khirnov
2023-12-06 20:03 ` Vittorio Giovara
2023-12-06 20:21 ` Michael Niedermayer
2023-12-07 10:52 ` Anton Khirnov
2023-12-07 18:10 ` Michael Niedermayer
2023-12-07 18:27 ` Michael Niedermayer
2023-12-11 9:06 ` Anton Khirnov
2024-01-15 23:51 ` Marth64
2024-01-24 12:51 ` Anton Khirnov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0101018c40d1f5e9-4992382c-2ab3-48d4-a2e5-c872414b7b4f-000000@us-west-2.amazonses.com \
--to=ffmpeg-devel@ffmpeg.org \
--cc=cosmin@cosmin.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git