[asterisk-dev] Channel locking mechanism in Asterisk

chaitra.bhat at lakecommunications.com chaitra.bhat at lakecommunications.com
Wed Nov 3 05:29:36 CDT 2010


Hi Mark,

Thanks for your response.

I do not think we will be moving to ver 1.8.0 version of Asterisk since 
the Asterisk 1.4.22 code has been customised to suit our platform. Also, 
this huge a change might not be welcomed this late into our project. But 
since we are looking for some performance improvement in Asterisk, we 
might consider the hash table look-up for the channels. 

At the same time, moving to reference counted objects for Asterisk 
channels might be a bigger risk compared to the hashing of the Asterisk 
channels. Could the hash table concept be ported independent of the 
reference-counted objects for Asterisk channels?

Thanks,

Chaitra Bhat | Software Engineer

LAKE Communications
Beech House, Greenhills Road,
Dublin 24, IRELAND
Int: +353 1 4031067
fax. +353 1 452 0826
www.lakecommunications.com





Mark Michelson <mmichelson at digium.com> 
Sent by: asterisk-dev-bounces at lists.digium.com
01/11/2010 14:34
Please respond to
Asterisk Developers Mailing List <asterisk-dev at lists.digium.com>


To
asterisk-dev at lists.digium.com
cc

Subject
Re: [asterisk-dev] Channel locking mechanism in Asterisk






On 11/01/2010 05:06 AM, chaitra.bhat at lakecommunications.com wrote: 

Hi All, 

We use Asterisk version 1.4.22 in our PBX product. But we have seen that 
the locking mechanism that exists in the channel code today is highly 
inefficient and CPU consuming. Also, if not careful with the locks order, 
can lead to deadlocks. 

So, was wondering if anything has changed with regard to this in the later 
versions of Asterisk (1.4 or 1.6). There were talks of introducing a 
reference counting mechanism - was this implemented? 

If I see channel.c and lock.h in 1.4.36, I do not see any changes there 
wrt the locking mechanism. And in ver 1.6.2, except for the RW locks, I do 
not see any other difference. 

Can somebody tell me what changes were introduced in Asterisk 1.6 to 
manage and debug the locking of the channels efficiently please? 

Thanks, 

-Bhatc

You're not going to find any major changes to the channel structure in the 
1.6.X series. In the recently released 1.8 series, the ast_channel 
structure has been converted to a reference-counted object and is stored 
in a hash table instead of a linked list. The biggest gain here is quicker 
lookups of channels. Regarding locking mechanisms, there's not much change 
there, so you still need to be careful and respect the defined locking 
order. There were a small set of cases where a channel lock was replaced 
by grabbing a reference to the channel instead, but there may be 2 or 3 
cases of this total in the whole code base.

Mark Michelson-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

************************************************************************************
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify mailadmin at lakecommunications.com

This footnote also confirms that this email message has been scanned for the presence of computer viruses and other security threats.

Registered Office: Lake Communications Ltd, Beech House, Greenhills Road, Dublin 24, Ireland.
Registered No. 	59890
************************************************************************************

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20101103/959e9398/attachment.htm 


More information about the asterisk-dev mailing list