Performance problem mixing 4 RTP streams
Fritz Emboli
fritz.emboli at gmail.com
Fri Jan 12 16:19:35 UTC 2018
Hi Tim!
> gst-launch-1.0 -v \
> > udpsrc port=10204 caps="application/x-rtp,clock-rate=8000,channels=1"
> > ! queue ! rtppcmadepay ! alawdec ! \
> > liveadder name=mix latency=20000 ! audioconvert ! alsasink
> > device="hw:0,0" sync=false \
> > udpsrc port=10206 caps="application/x-rtp,clock-rate=8000,channels=1"
> > ! queue ! rtppcmadepay ! alawdec ! mix. \
> > udpsrc port=10208 caps="application/x-rtp,clock-rate=8000,channels=1"
> > ! queue ! rtppcmadepay ! alawdec ! mix. \
> > udpsrc port=10210 caps="application/x-rtp,clock-rate=8000,channels=1"
> > ! queue ! rtppcmadepay ! alawdec ! mix.
>
> This doesn't look like something that should take huge amounts of CPU
> at first glance.
>
Yes, i thought so.
> What kind of embedded device is this with?
>
It is an i.MX287 (454MHz Arm926EJ-S core with 16KB/32KB Cache)
> What GStreamer version are you using?
>
1.12.0
>
> What do perf or perf top say where the cpu time is spent?
>
Had to install perf first.
perf top is not usable.
The top 20 lines of "perf report":
# Samples: 268K of event 'cpu-clock'
# Event count (approx.): 67059250000
#
# Overhead Command Shared
Object Symbol
# ........ .............. ..............................
...............................................
#
9.23% gst-launch-1.0 [kernel.kallsyms] [k]
_raw_spin_unlock_irq
4.28% gst-launch-1.0 [kernel.kallsyms] [k]
_raw_spin_unlock_irqrestore
3.05% gst-launch-1.0 [kernel.kallsyms] [k]
lock_acquire
1.47% gst-launch-1.0 [kernel.kallsyms] [k]
_raw_read_unlock_irq
1.44% gst-launch-1.0 [kernel.kallsyms] [k]
ktime_get_ts
1.38% gst-launch-1.0 libpthread-2.18.so [.]
pthread_getspecific
1.21% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_slice_alloc
1.16% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.]
g_type_check_instance_is_fundamentally_a
1.10% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_slice_free1
1.08% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_private_get
0.95% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_mutex_lock
0.87% gst-launch-1.0 [kernel.kallsyms] [k]
__do_softirq
0.78% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_datalist_get_flags
0.77% gst-launch-1.0 [kernel.kallsyms] [k]
lock_release
0.70% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_mutex_unlock
0.68% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.]
g_type_check_instance_is_a
0.67% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
0x0009461c
0.64% gst-launch-1.0 [kernel.kallsyms] [k]
vector_swi
0.64% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_mini_object_unlock
0.64% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.]
g_type_is_a
0.60% gst-launch-1.0 libc-2.18.so [.]
syscall
0.59% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
0x00093828
0.58% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_pad_push
0.58% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_mini_object_lock
0.56% gst-launch-1.0 libgstbadbase-1.0.so.0.1200.0 [.]
gst_aggregator_iterate_sinkpads
0.52% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_buffer_get_sizes_range
0.52% gst-launch-1.0 [kernel.kallsyms] [k]
_raw_read_unlock_irqrestore
0.50% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_atomic_pointer_get
0.50% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_buffer_map_range
0.50% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.]
g_object_ref
0.50% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_mini_object_unref
0.49% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_slice_free_chain_with_offset
0.48% gst-launch-1.0 libpthread-2.18.so [.]
pthread_mutex_lock
0.48% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.]
g_object_unref
0.45% gst-launch-1.0 [kernel.kallsyms] [k]
do_sys_poll
0.44% gst-launch-1.0 [kernel.kallsyms] [k]
__copy_from_user
0.42% gst-launch-1.0 libgstaudio-1.0.so.0.1200.0 [.]
gst_audio_buffer_clip
0.42% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_iterator_next
0.42% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_object_unref
0.39% gst-launch-1.0 libgstreamer-1.0.so.0.1200.0 [.]
gst_memory_map
0.39% gst-launch-1.0 libglib-2.0.so.0.5200.1 [.]
g_atomic_int_get
0.38% gst-launch-1.0 libgobject-2.0.so.0.5200.1 [.] qsort at plt
>
> You might also want an rtpjitterbuffer latency=50 or somesuch after
> each udpsrc.
>
> Does your audiomixer use liborc and is it active on your cpu?
>
All plugins are compiled with "--enable-orc".
Greetings
Fritz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180112/ae2012c3/attachment-0001.html>
More information about the gstreamer-devel
mailing list