[gst-devel] Memory usage

Tiago Katcipis katcipis at inf.ufsc.br
Wed Aug 19 15:41:31 CEST 2009


Im working on an streaming server and i need to have several pipes running
at the same time, i started to do some tests to see how much memory and how
much threads would something like that use on gstreamer. So i wrote a very
simple application that starts a lot of pipelines, where the pipelines will
be simply an faksrc ! fakesink. I started the tests and i realized that even
for a simple task as running an fakesrc ! fakesink im using a lot of memory.

with 1 pipe:

Tasks:   2 total,   1 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s): 51.5%us,  1.0%sy,  0.0%ni, 47.5%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   963800k used,  1063432k free,    75976k buffers
Swap:   995988k total,        0k used,   995988k free,   430676k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6402 katcipis  20   0 26204 4060 2548 R 99.9  0.2   0:48.04
multiple_pipes

 6400 katcipis  20   0 26204 4060 2548 S  0.0  0.2   0:00.04 multiple_pipes


with 2 pipes:

Tasks:   3 total,   2 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s): 96.8%us,  1.8%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   965044k used,  1062188k free,    76804k buffers
Swap:   995988k total,        0k used,   995988k free,   430752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6541 katcipis  20   0 42600 4092 2544 R 95.3  0.2   0:16.22
multiple_pipes

 6542 katcipis  20   0 42600 4092 2544 R 95.3  0.2   0:16.36
multiple_pipes

 6539 katcipis  20   0 42600 4092 2544 S  0.0  0.2   0:00.04 multiple_pipes

with 3 pipes:

Tasks:   4 total,   2 running,   2 sleeping,   0 stopped,   0 zombie
Cpu(s): 90.6%us,  3.1%sy,  0.0%ni,  6.2%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   964608k used,  1062624k free,    77528k buffers
Swap:   995988k total,        0k used,   995988k free,   430752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6563 katcipis  20   0 51820 4116 2544 S 62.5  0.2   0:17.44
multiple_pipes

 6566 katcipis  20   0 51820 4116 2544 R 62.5  0.2   0:16.36
multiple_pipes

 6565 katcipis  20   0 51820 4116 2544 R 50.0  0.2   0:13.94
multiple_pipes

 6561 katcipis  20   0 51820 4116 2544 S  0.0  0.2   0:00.04 multiple_pipes


i have another test where i run an gnomevfssrc and a decodebin and the
numbers are even worse:

with 1 pipe:

Tasks:   2 total,   0 running,   2 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.1%us,  2.7%sy,  0.0%ni, 89.2%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   972104k used,  1055128k free,    78080k buffers
Swap:   995988k total,        0k used,   995988k free,   430760k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6603 katcipis  20   0 43724  12m 5212 S  0.0  0.6   0:00.10
multiple_pipes

 6605 katcipis  20   0 43724  12m 5212 S  0.0  0.6   0:00.12 multiple_pipes

with 2 pipes:

Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie
Cpu(s): 15.7%us,  4.3%sy,  0.0%ni, 79.8%id,  0.0%wa,  0.2%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   972604k used,  1054628k free,    78548k buffers
Swap:   995988k total,        0k used,   995988k free,   430760k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6622 katcipis  20   0 53348  13m 5208 S  0.0  0.7   0:00.08
multiple_pipes

 6624 katcipis  20   0 53348  13m 5208 S  0.0  0.7   0:00.10
multiple_pipes

 6625 katcipis  20   0 53348  13m 5208 S  0.0  0.7   0:00.04 multiple_pipes

with 3 pipes:

Tasks:   4 total,   0 running,   4 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.8%us,  4.5%sy,  0.0%ni, 88.6%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st
Mem:   2027232k total,   974368k used,  1052864k free,    79328k buffers
Swap:   995988k total,        0k used,   995988k free,   430760k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+
COMMAND

 6960 katcipis  20   0 62136  13m 5208 S  9.6  0.7   0:00.04
multiple_pipes

 6957 katcipis  20   0 62136  13m 5208 S  0.0  0.7   0:00.10
multiple_pipes

 6959 katcipis  20   0 62136  13m 5208 S  0.0  0.7   0:00.08
multiple_pipes

 6962 katcipis  20   0 62136  13m 5208 S  0.0  0.7   0:00.02 multiple_pipes


i also realized that for every stream there is a thread, is there some way
to use one thread for multiple pipes (or multiple streams)? is something
that i did terribly wrong or it is normal this usage of memory? if it is
normal, can i configure gstreamer to use less memory? considering that
gstreamer works even in embedded systems i suppose im doing something very
wrong on there is some way to use less resources.

im attaching the source code of my tests, the simple one using fakesrc and
the complete one using gnomevfs and decodebin.

best regards,
Katcipis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20090819/4e8d011e/attachment.htm>


More information about the gstreamer-devel mailing list