Resource usage on pipelines

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Resource usage on pipelines

Russel Winder
Hi,

I have a Rust program that implements:

gst-launch-1.0 -e uridecodebin uri=dvb://<channel> name=d ! queue ! x264enc ! mp4mux name=m ! filesink location=<output-path> d. ! queue ! avenc_ac3 ! m.

it does the job asked of it and so in that sense is successful.

However, there seems to be between 25 to 35 Linux tasks (as reported by htop)
with one always being 60% to 80% CPU usage, three or four in the 10% to 20%
region and the rest in the 4% to 6% region. This seems like an awful lot of
processing power being used on this four core with hyperthreads laptop. Is all
that computation actually needed or am I just doing something wrong in the
pipeline that means more resources than required are being employed?

--
Russel.
===========================================
Dr Russel Winder      t: +44 20 7585 2200
41 Buckmaster Road    m: +44 7770 465 077
London SW11 1EN, UK   w: www.russel.org.uk


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Resource usage on pipelines

Nicolas Dufresne-5
Le samedi 19 janvier 2019 à 16:38 +0000, Russel Winder a écrit :

> Hi,
>
> I have a Rust program that implements:
>
> gst-launch-1.0 -e uridecodebin uri=dvb://<channel> name=d ! queue ! x264enc ! mp4mux name=m ! filesink location=<output-path> d. ! queue ! avenc_ac3 ! m.
>
> it does the job asked of it and so in that sense is successful.
>
> However, there seems to be between 25 to 35 Linux tasks (as reported by htop)
> with one always being 60% to 80% CPU usage, three or four in the 10% to 20%
> region and the rest in the 4% to 6% region. This seems like an awful lot of
> processing power being used on this four core with hyperthreads laptop. Is all
> that computation actually needed or am I just doing something wrong in the
> pipeline that means more resources than required are being employed?

You can greatly reduce this in your application, even though, yes,
GStreamer creates a lot of threads. First, you can drop threads in your
pipeline by removing queues if they are not strictly needed.

Second is to configure each decoder/encoder element that has a thread
configuration. Note that the property names are unfortunatly not
unitfied, so you'll need a bit of per element knowledge in your
applicaiton. By default these element assumes to be the only high load
element in the pipeline and will create as many threads as there is CPU
threads available.

Note that lastly, unconfigured x264enc will a lot of processing power.
The default setting is of really high quality, you should consider
reconfiguring it for your needs.

>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel