Memory usage seems to be proportional to file size when playing m4a files.

Lei Miao leimiao09 at gmail.com
Thu Jan 16 11:13:56 PST 2014


Hi there,

We are using gstreamer in embedded Linux environment, and its memory usage
exceeds our limit when playing large m4a audio files. After investigation,
it seems that the memory usage is somewhat proportional to the size of the
m4a file. I also did some experiments in desktop Linux environment, and the
results were similar. In particular, I first tried a 87MB file, and
gstreamer used about 16MB memory:

"lei at lei-OptiPlex-390:/media/LEI$ gst-launch-0.10 playbin
uri=file:///media/LEI/White_Noise_320kbps_1Hour.m4a &
[1] 23790
lei at lei-OptiPlex-390:/media/LEI$ Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
lei at lei-OptiPlex-390:/media/LEI$ cat /proc/23790/statm
32565 4003 1328 7 0 11705 0
"

I then tried a 609MB file, and gstreamer used over 50MB memory:

"lei at lei-OptiPlex-390:/media/LEI$ killall gst-launch-0.10
lei at lei-OptiPlex-390:/media/LEI$ gst-launch-0.10 playbin
uri=file:///media/LEI/White_Noise_320kbps_7Hour.m4a &
[2] 23826
[1]   Terminated              gst-launch-0.10 playbin
uri=file:///media/LEI/White_Noise_320kbps_1Hour.m4a
lei at lei-OptiPlex-390:/media/LEI$ Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
lei at lei-OptiPlex-390:/media/LEI$
lei at lei-OptiPlex-390:/media/LEI$ cat /proc/23826/statm
41648 13086 1328 7 0 20788 0
lei at lei-OptiPlex-390:/media/LEI$ cat /proc/23826/statm
41648 13086 1328 7 0 20788 0
"

I also tried pretty recent gstreamer 1.2 and various aac decoder elements.
Results were the same. Below are the stats provided by tracelib. It looks
like some of the pads had buffers whose size is proportional to the file
size.

"lei at lei-OptiPlex-390:~/Documents/gst-tracelib$
LD_PRELOAD=src/.libs/libgsttracelib.so gst-launch-0.10 playbin
uri=file:///media/LEI/White_Noise_320kbps_7Hour.m4a
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
^CCaught interrupt -- handling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 5256616552 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Overall Statistics:
Number of Threads: 5
Number of Elements: 17
Number of Bins: 4
Number of Pads: 31
Number of GhostPads: 4
Number of Buffers passed: 7068
Number of Events sent: 82
Number of Message sent: 16
Number of Queries sent: 0
Time: 0:00:05.371006122
Avg/Max CPU load: 8 %, 58 %
Max QOS ratio: 0 %
Max Memory usage: 1562416 kb

Thread 0xb2e03ac0 Statistics:
  Time: 0:00:00.102057797, 1 %
  Avg/Max CPU load: 0 %, 58 %
  Pad Statistics:
Thread 0x84b8b50 Statistics:
  Time: 0:00:00.186786480, 3 %
  Avg/Max CPU load: 0 %, 0 %
  Pad Statistics:
    < faad0_sink               : buffers     364 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.198284149, bytes/sec 39142.916041
    > decodebin0_src0          : buffers     363 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.194604287, bytes/sec 286229.309848
    > faad0_src                : buffers     363 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.194604287, bytes/sec 286229.309848
    > selector_audio_src0_src  : buffers     363 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.194606439, bytes/sec 286229.191270
    < preroll_audio_src0_sink  : buffers     363 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.194606439, bytes/sec 286229.191270
    > preroll_audio_src0_src   : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.193298109, bytes/sec 182980.445192
    < abin_sink                : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.193298109, bytes/sec 182980.445192
    > aconv_src                : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.192087403, bytes/sec 183023.113103
    < aresample_sink           : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.192087403, bytes/sec 183023.113103
    > aresample_src            : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.191095777, bytes/sec 183058.074985
    < volume_sink              : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.191095777, bytes/sec 183058.074985
    > volume_src               : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.189524125, bytes/sec 183113.514286
    < audiosink_sink           : buffers     232 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max) ......./   4096/......., time
0:00:05.189524125, bytes/sec 183113.514286
Thread 0x85d7ea0 Statistics:
  Time: 0:00:00.037589903, 0 %
  Avg/Max CPU load: 0 %, 7 %
  Pad Statistics:
    < decodebin0_sink          : buffers     386 (ro     0,pre   0,dis
0,gap     0,dlt     0), size (min/avg/max)      16/  22973/8682999, time
0:00:05.258568138, bytes/sec 1686310.373335
    < typefind_sink            : buffers     386 (ro     0,pre   0,dis
0,gap     0,dlt     0), size (min/avg/max)      16/  22973/8682999, time
0:00:05.258568138, bytes/sec 1686310.373335
    > typefind_src             : buffers     386 (ro     0,pre   0,dis
0,gap     0,dlt     0), size (min/avg/max)      16/  22973/8682999, time
0:00:05.258568513, bytes/sec 1686310.253081
    < qtdemux0_sink            : buffers     386 (ro     0,pre   0,dis
0,gap     0,dlt     0), size (min/avg/max)      16/  22973/8682999, time
0:00:05.258568513, bytes/sec 1686310.253081
Thread 0x84b88f0 Statistics:
  Time: 0:00:00.118386171, 2 %
  Avg/Max CPU load: 0 %, 0 %
  Pad Statistics:
    > qtdemux0_audio_00        : buffers     380 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.230470559, bytes/sec 40612.024789
    < queue0_sink              : buffers     380 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.230470559, bytes/sec 40612.024789
    > queue0_src               : buffers     364 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.230114535, bytes/sec 38904.692935
    < aacparse0_sink           : buffers     364 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.230114535, bytes/sec 38904.692935
    > aacparse0_src            : buffers     364 (ro     0,pre   0,dis
1,gap     0,dlt     0), size (min/avg/max)     353/    559/    598, time
0:00:05.198284149, bytes/sec 39142.916041
Thread 0xad603e00 Statistics:
  Time: 0:00:00.020254538, 0 %
  Avg/Max CPU load: 0 %, 0 %
  Pad Statistics:

Element Statistics:
  GstTypeFindElement:typefind                  : buffers in/out     386/
 386 bytes in/out      8903581/     8903581 first activity
0:00:00.023557397,  ev/msg/qry sent     1/    0/    0
  GstQTDemux:qtdemux0                          : buffers in/out     386/
 380 bytes in/out      8903581/      220494 first activity
0:00:00.023603848,  ev/msg/qry sent     3/    2/    0
  GstQueue:queue0                              : buffers in/out     380/
 364 bytes in/out       220494/      211195 first activity
0:00:00.051741935,  ev/msg/qry sent     4/    0/    0
  GstBaseParse:aacparse0                       : buffers in/out     364/
 364 bytes in/out       211195/      211195 first activity
0:00:00.051859689,  ev/msg/qry sent     3/    0/    0
  GstAudioDecoder:faad0                        : buffers in/out     364/
 363 bytes in/out       211195/     1486848 first activity
0:00:00.083756439,  ev/msg/qry sent    11/    0/    0
  GstStreamSelector:selector_audio_src0        : buffers in/out       -/
 363 bytes in/out            -/     1486848 first activity
0:00:00.087758125,  ev/msg/qry sent    11/    0/    0
  GstQueue:preroll_audio_src0                  : buffers in/out     363/
 232 bytes in/out      1486848/      950272 first activity
0:00:00.087758126,  ev/msg/qry sent    12/    0/    0
  GstBaseTransform:aconv                       : buffers in/out       -/
 232 bytes in/out            -/      950272 first activity
0:00:00.089136064,  ev/msg/qry sent    12/    0/    0
  GstBaseTransform:aresample                   : buffers in/out     232/
 232 bytes in/out       950272/      950272 first activity
0:00:00.089136065,  ev/msg/qry sent    12/    0/    0
  GstBaseTransform:volume                      : buffers in/out     232/
 232 bytes in/out       950272/      950272 first activity
0:00:00.090205748,  ev/msg/qry sent    12/    0/    0

Bin Statistics:
  GstDecodeBin:decodebin0                      : buffers in/out     363/
 386 bytes in/out      1486848/     8903581 first activity
0:00:00.023557396,  ev/msg/qry sent    22/    5/    0
  GstPlayBin:playbin0                          : buffers in/out       -/
   - bytes in/out            -/           - first activity
0:00:00.023557396,  ev/msg/qry sent    82/   16/    0
  GstBin:abin                                  : buffers in/out     232/
   - bytes in/out       950272/           - first activity
0:00:00.087849537,  ev/msg/qry sent    37/    7/    0
  GstAutoAudioSink:audiosink                   : buffers in/out     232/
   - bytes in/out       950272/           - first activity
0:00:00.091847714,  ev/msg/qry sent     1/
"

Does anybody have any insights on what might be happening? The files I used
are available at
https://dl.dropboxusercontent.com/u/54923483/White_Noise_320kbps_1Hour.m4aand
https://dl.dropboxusercontent.com/u/54923483/White_Noise_320kbps_7Hour.m4a .

Thanks,

LM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140116/17631fbe/attachment-0001.html>


More information about the gstreamer-devel mailing list