[asterisk-dev] RTP Bridging optimization
Vadim Lebedev
vadim at mbdsys.com
Mon May 14 16:14:43 MST 2007
Kevin P. Fleming wrote:
>Vadim Lebedev wrote:
>
>
>
>>The trick is that the pipe is ALWAYS empty.... And when we push
>>something to the pipe, we pull the data from it immideately afterwards.
>>
>>
>
>So you've replaced a pair of read()/write() calls with two calls to
>splice()? It's the same number of userspace/kernelspace boundary
>crossings, I can't see how this would be any significant improvement at all.
>
>
>
Kewin,
Now, when we agree that it IS possible to use single pipe for multiple
bridges
let's look on benefits:
As for now Asterisk when packet arrives on a briged socket
1. Thread switch to the reader thread
2. read from socket + transfer of data from kernel to user
3. thread swicth to writer thread
4. write to socket + transfer of data from user to kernel
Now if my proposal is implemented in the worst case we will economise 2
thread switches, 2 user/kernel data transfers
plus we'll have much less threads in the system.
I think we can expect pretty dramatic improvements
Thanks
Vadim
>The whole point of splice() and tee() are to allow *streams* of data to
>be copied without having to bring the data from kernelspace to
>userspace; doing it one packet at a time will probably defeat the
>purpose of using them entirely.
>_______________________________________________
>--Bandwidth and Colocation provided by Easynews.com --
>
>asterisk-dev mailing list
>To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20070514/2141ffd6/attachment.htm
More information about the asterisk-dev
mailing list