Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
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".

  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