[Kamailio-Devel] [SR-Dev] static buffers

Andrei Pelinescu-Onciul andrei at iptel.org
Thu Nov 27 16:48:54 CET 2008


On Nov 27, 2008 at 17:15, Daniel-Constantin Mierla <miconda at gmail.com> wrote:
> Hello,
> 
> There seem to be many places where static buffers are used for building 
> strings. It is clear they are used just for usage inside some functions, 
> with no need to keep the value for usage somewhere else.
> 
> Would defining a global static buffer to be used for such cases make 
> sense? The access to the pointer and size can be given via functions.

In general I think we should move away from static buffers
 (we will need to get rid of a lot of them for the async. stuff so 
 most of this work will have to be redone anyway).

> 
> There could be couple of such buffers to be used in the cases one 
> function need concurrent access to more than one ... opinions? It will 
> reduce memory space reserved and used...

I'm afraid it would introduce a lot of new bugs (you must make sure your
 functions that call each other do not use the same static buffer and
 that you do not call function using the same buffer in a row).
As far as the memory space is concerned, it depends on how many of them
are used.
At least in sip-router core less then 1Mb is used in static vars of all 
kinds:

objdump -j .bss -j .data -t ser|perl -ne  'END { print "\nTotal: $s
bytes\n" }; @l=split;   $s+= hex $l[4]; print hex($l[4]),
"\t-\t$l[5]\t$l[1]\t$l[2]\t$l[3]\n" '
=> Total: 4604741 bytes in staitic vars, but 4M is the pkg mem pool
=> 410437 bytes from which 2*139276 are tcp local timers and
 65k udp recv buffers => 66349 in other static vars and buffers.

So I guess it doesn't make sense to try to go beyond 66k...


Andrei



More information about the Devel mailing list