Resource usage on pipelines

Nicolas Dufresne nicolas at ndufresne.ca
Sat Jan 19 16:49:22 UTC 2019


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
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list